CINXE.COM
TECkit - SIL Language Technology
<!doctype html> <!--[if lt IE 7]><html class="no-js ie ie6 lt-ie9 lt-ie8 lt-ie7" lang="en-US" prefix="og: https://ogp.me/ns#"> <![endif]--> <!--[if IE 7]><html class="no-js ie ie7 lt-ie9 lt-ie8" lang="en-US" prefix="og: https://ogp.me/ns#"> <![endif]--> <!--[if IE 8]><html class="no-js ie ie8 lt-ie9" lang="en-US" prefix="og: https://ogp.me/ns#"> <![endif]--> <!--[if gt IE 8]><!--><html class="no-js" lang="en-US" prefix="og: https://ogp.me/ns#"> <!--<![endif]--> <head> <meta charset="UTF-8" /> <title> TECkit - SIL Language Technology </title> <meta name="description" content="Supporting language communities with literacy, development, and translation tools"> <link rel="stylesheet" href="https://software.sil.org/wp/wp-content/themes/web-productsites/css/style.css" type="text/css" media="screen" /> <link rel="stylesheet" href="https://software.sil.org/wp/wp-content/themes/web-productsites/vendor/fortawesome/font-awesome/css/font-awesome.min.css"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="pingback" href="https://software.sil.org/wp/xmlrpc.php" /> <link href='https://fonts.googleapis.com/css?family=Open+Sans:400italic,400,700,700italic' rel='stylesheet' type='text/css'> <style>#page-site-banner { background-image: url(https://software.sil.org/wp/wp-content/uploads/2024/08/banner_image-1.jpeg); }</style> <!-- Search Engine Optimization by Rank Math PRO - https://rankmath.com/ --> <meta name="description" content="a Text Encoding Conversion toolkit"/> <meta name="robots" content="index, follow, max-snippet:-1, max-video-preview:-1, max-image-preview:large"/> <link rel="canonical" href="https://software.sil.org/teckit/" /> <meta property="og:locale" content="en_US" /> <meta property="og:type" content="article" /> <meta property="og:title" content="TECkit - SIL Language Technology" /> <meta property="og:description" content="a Text Encoding Conversion toolkit" /> <meta property="og:url" content="https://software.sil.org/teckit/" /> <meta property="og:site_name" content="SIL Language Technology" /> <meta property="og:updated_time" content="2024-10-01T21:37:32+00:00" /> <meta property="article:published_time" content="2023-04-25T20:39:33+00:00" /> <meta property="article:modified_time" content="2024-10-01T21:37:32+00:00" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:title" content="TECkit - SIL Language Technology" /> <meta name="twitter:description" content="a Text Encoding Conversion toolkit" /> <meta name="twitter:label1" content="Time to read" /> <meta name="twitter:data1" content="6 minutes" /> <script type="application/ld+json" class="rank-math-schema-pro">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://software.sil.org/#organization","name":"SIL Language Technology","url":"https://software.sil.org","logo":{"@type":"ImageObject","@id":"https://software.sil.org/#logo","url":"https://software.sil.org/wp/wp-content/uploads/2017/01/2014_sil_logo_80w_96h.png","contentUrl":"https://software.sil.org/wp/wp-content/uploads/2017/01/2014_sil_logo_80w_96h.png","caption":"SIL Language Technology","inLanguage":"en-US","width":"80","height":"96"}},{"@type":"WebSite","@id":"https://software.sil.org/#website","url":"https://software.sil.org","name":"SIL Language Technology","publisher":{"@id":"https://software.sil.org/#organization"},"inLanguage":"en-US"},{"@type":"ImageObject","@id":"https://software.sil.org/wp/wp-content/uploads/2017/01/cropped-2014_sil_logo_80w_96h.png","url":"https://software.sil.org/wp/wp-content/uploads/2017/01/cropped-2014_sil_logo_80w_96h.png","width":"80","height":"80","inLanguage":"en-US"},{"@type":"WebPage","@id":"https://software.sil.org/teckit/#webpage","url":"https://software.sil.org/teckit/","name":"TECkit - SIL Language Technology","datePublished":"2023-04-25T20:39:33+00:00","dateModified":"2024-10-01T21:37:32+00:00","isPartOf":{"@id":"https://software.sil.org/#website"},"primaryImageOfPage":{"@id":"https://software.sil.org/wp/wp-content/uploads/2017/01/cropped-2014_sil_logo_80w_96h.png"},"inLanguage":"en-US"},{"@type":"Person","@id":"https://software.sil.org/author/ltuse/","name":"Language Technology","url":"https://software.sil.org/author/ltuse/","image":{"@type":"ImageObject","@id":"https://secure.gravatar.com/avatar/0cd53dc386e003c827db019ee9a35714?s=96&d=mm&r=g","url":"https://secure.gravatar.com/avatar/0cd53dc386e003c827db019ee9a35714?s=96&d=mm&r=g","caption":"Language Technology","inLanguage":"en-US"},"worksFor":{"@id":"https://software.sil.org/#organization"}},{"@type":"Article","headline":"TECkit - SIL Language Technology","datePublished":"2023-04-25T20:39:33+00:00","dateModified":"2024-10-01T21:37:32+00:00","author":{"@id":"https://software.sil.org/author/ltuse/","name":"Language Technology"},"publisher":{"@id":"https://software.sil.org/#organization"},"description":"a Text Encoding Conversion toolkit","name":"TECkit - SIL Language Technology","@id":"https://software.sil.org/teckit/#richSnippet","isPartOf":{"@id":"https://software.sil.org/teckit/#webpage"},"image":{"@id":"https://software.sil.org/wp/wp-content/uploads/2017/01/cropped-2014_sil_logo_80w_96h.png"},"inLanguage":"en-US","mainEntityOfPage":{"@id":"https://software.sil.org/teckit/#webpage"}}]}</script> <!-- /Rank Math WordPress SEO plugin --> <script type="text/javascript"> /* <![CDATA[ */ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/software.sil.org\/wp\/wp-includes\/js\/wp-emoji-release.min.js?ver=1c3f99931113e4e267889c96f3b63dc5"}}; /*! This file is auto-generated */ !function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings); /* ]]> */ </script> <style id='wp-emoji-styles-inline-css' type='text/css'> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='wp-block-library-css' href='https://software.sil.org/wp/wp-includes/css/dist/block-library/style.min.css?ver=1c3f99931113e4e267889c96f3b63dc5' type='text/css' media='all' /> <style id='rank-math-toc-block-style-inline-css' type='text/css'> .wp-block-rank-math-toc-block nav ol{counter-reset:item}.wp-block-rank-math-toc-block nav ol li{display:block}.wp-block-rank-math-toc-block nav ol li:before{content:counters(item, ".") ". ";counter-increment:item} </style> <style id='classic-theme-styles-inline-css' type='text/css'> /*! This file is auto-generated */ .wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} </style> <style id='global-styles-inline-css' type='text/css'> :root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} :where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;} :where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;} :root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;} </style> <link rel='stylesheet' id='contact-form-7-css' href='https://software.sil.org/wp/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=5.9.8' type='text/css' media='all' /> <link rel='stylesheet' id='responsive-lightbox-nivo-css' href='https://software.sil.org/wp/wp-content/plugins/responsive-lightbox/assets/nivo/nivo-lightbox.min.css?ver=2.4.8' type='text/css' media='all' /> <link rel='stylesheet' id='responsive-lightbox-nivo-default-css' href='https://software.sil.org/wp/wp-content/plugins/responsive-lightbox/assets/nivo/themes/default/default.css?ver=2.4.8' type='text/css' media='all' /> <link rel='stylesheet' id='dashicons-css' href='https://software.sil.org/wp/wp-includes/css/dashicons.min.css?ver=1c3f99931113e4e267889c96f3b63dc5' type='text/css' media='all' /> <link rel='stylesheet' id='to-top-css' href='https://software.sil.org/wp/wp-content/plugins/to-top/public/css/to-top-public.css?ver=2.5.4' type='text/css' media='all' /> <link rel='stylesheet' id='megamenu-css' href='https://software.sil.org/wp/wp-content/uploads/maxmegamenu/style.css?ver=2ff3b2' type='text/css' media='all' /> <link rel='stylesheet' id='custom-styles-css' href='https://software.sil.org/wp/wp-content/themes/web-productsites/css/custom-style.css?ver=1c3f99931113e4e267889c96f3b63dc5' type='text/css' media='all' /> <script type="text/javascript" src="https://software.sil.org/wp/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script> <script type="text/javascript" src="https://software.sil.org/wp/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script> <script type="text/javascript" src="https://software.sil.org/wp/wp-content/plugins/responsive-lightbox/assets/nivo/nivo-lightbox.min.js?ver=2.4.8" id="responsive-lightbox-nivo-js"></script> <script type="text/javascript" src="https://software.sil.org/wp/wp-includes/js/underscore.min.js?ver=1.13.4" id="underscore-js"></script> <script type="text/javascript" src="https://software.sil.org/wp/wp-content/plugins/responsive-lightbox/assets/infinitescroll/infinite-scroll.pkgd.min.js?ver=1c3f99931113e4e267889c96f3b63dc5" id="responsive-lightbox-infinite-scroll-js"></script> <script type="text/javascript" id="responsive-lightbox-js-before"> /* <![CDATA[ */ var rlArgs = {"script":"nivo","selector":"lightbox","customEvents":"","activeGalleries":true,"effect":"fade","clickOverlayToClose":true,"keyboardNav":true,"errorMessage":"The requested content cannot be loaded. Please try again later.","woocommerce_gallery":false,"ajaxurl":"https:\/\/software.sil.org\/wp\/wp-admin\/admin-ajax.php","nonce":"5493d09c11","preview":false,"postId":5284,"scriptExtension":false}; /* ]]> */ </script> <script type="text/javascript" src="https://software.sil.org/wp/wp-content/plugins/responsive-lightbox/js/front.js?ver=2.4.8" id="responsive-lightbox-js"></script> <script type="text/javascript" id="to-top-js-extra"> /* <![CDATA[ */ var to_top_options = {"scroll_offset":"500","icon_opacity":"50","style":"icon","icon_type":"dashicons-arrow-up-alt2","icon_color":"#ffffff","icon_bg_color":"#000000","icon_size":"32","border_radius":"20","image":"https:\/\/software.sil.org\/wp\/wp-content\/plugins\/to-top\/admin\/images\/default.png","image_width":"65","image_alt":"","location":"bottom-right","margin_x":"20","margin_y":"20","show_on_admin":"0","enable_autohide":"1","autohide_time":"2","enable_hide_small_device":"0","small_device_max_width":"640","reset":"0"}; /* ]]> */ </script> <script async type="text/javascript" src="https://software.sil.org/wp/wp-content/plugins/to-top/public/js/to-top-public.js?ver=2.5.4" id="to-top-js"></script> <script type="text/javascript" id="wpstg-global-js-extra"> /* <![CDATA[ */ var wpstg = {"nonce":"238a561a4a"}; /* ]]> */ </script> <script type="text/javascript" src="https://software.sil.org/wp/wp-content/plugins/wp-staging-pro/assets/js/dist/wpstg-blank-loader.min.js?ver=1c3f99931113e4e267889c96f3b63dc5" id="wpstg-global-js"></script> <link rel="https://api.w.org/" href="https://software.sil.org/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://software.sil.org/wp-json/wp/v2/pages/5284" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://software.sil.org/wp/xmlrpc.php?rsd" /> <link rel='shortlink' href='https://software.sil.org/?p=5284' /> <link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://software.sil.org/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fsoftware.sil.org%2Fteckit%2F" /> <link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://software.sil.org/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fsoftware.sil.org%2Fteckit%2F&format=xml" /> <link rel="icon" href="https://software.sil.org/wp/wp-content/uploads/2024/02/favicon.png" sizes="32x32" /> <link rel="icon" href="https://software.sil.org/wp/wp-content/uploads/2024/02/favicon.png" sizes="192x192" /> <link rel="apple-touch-icon" href="https://software.sil.org/wp/wp-content/uploads/2024/02/favicon.png" /> <meta name="msapplication-TileImage" content="https://software.sil.org/wp/wp-content/uploads/2024/02/favicon.png" /> <style type="text/css" id="wp-custom-css"> .trio-widget li { text-align: left; } </style> <!-- To Top Custom CSS --><style type='text/css'>#to_top_scrollup {-webkit-border-radius: 20%; -moz-border-radius: 20%; border-radius: 20%;}</style><style type="text/css">/** Mega Menu CSS: fs **/</style> <!-- BEGIN Google Analytics --> <!-- Google tag (gtag.js) --> <script async src=" https://www.googletagmanager.com/gtag/js?id=G-75WYFHYVT8"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-75WYFHYVT8'); </script> <!-- END Google Analytics --> </head> <body class="page-template-default page page-id-5284 wp-custom-logo mega-menu-max-mega-menu-1 mega-menu-max-mega-menu-2 teckit" data-source="base.twig"> <!-- HEADER --> <header id="navbar" role="banner"> <nav role="navigation" class="navbar navbar-default"> <div class="container"> <div class="navbar-header"> <a class="logo navbar-btn pull-left" href="https://software.sil.org" title="Home"> <img src="https://software.sil.org/wp/wp-content/themes/web-productsites/images/sil_logo_glyph.png" alt="Home"> </a> <!-- .btn-navbar is used as the toggle for collapsed navbar content --> <button type="button" class="navbar-toggle main-menu-toggle-test" data-toggle="collapse" data-target="#topNavbar">☰ Menu</button> </div> <div id="topNavbar" class="collapse navbar-collapse main-menu-toggle" data-collapse="collapsed"> <div id="search-box"> <div class="donate-button"> <a class="btn btn-default btn-block btn-download btn-secondary" href="https://give.sil.org/LangTech" role="button">Donate</a> </div> <div class="search-box-form"> <!-- <div class="search form-wrapper form-group"> <form method="get" id="searchform" class="form-inline form-search" action="https://software.sil.org/"> <label for="s" class="assistive-text">Search</label> <input type="text" class="form-control" name="s" id="s" placeholder="Search..." /> </form> </div> --> <form method="get" id="searchform" role="form" class="navbar-form navbar-right" action="https://software.sil.org/"> <div class="form-group"> <div class="input-group"> <input type="text" class="form-control" name="s" id="s" placeholder="Search..." /> <span class="input-group-btn"> <button type="submit" class="btn btn-default"><i class="fa fa-search fa-fw"></i></button> </span> </div> </div> </form> </div> </div> <div id="nav-list"> <ul class="nav navbar-nav navbar-right"> <li class="nav-main-item menu-item menu-item-type-post_type menu-item-object-page menu-item-865"> <a class="nav-main-link" href="https://software.sil.org/software-products/">Software Products</a> </li> <li class="nav-main-item menu-item menu-item-type-post_type menu-item-object-page menu-item-5875"> <a class="nav-main-link" href="https://software.sil.org/fonts/">Fonts</a> </li> <li class="nav-main-item menu-item menu-item-type-post_type menu-item-object-page menu-item-864"> <a class="nav-main-link" href="https://software.sil.org/news/">News</a> </li> <li class="nav-main-item menu-item menu-item-type-post_type menu-item-object-page menu-item-2630"> <a class="nav-main-link" href="https://software.sil.org/support/">Support</a> </li> <li class="nav-main-item menu-item menu-item-type-custom menu-item-object-custom menu-item-8685"> <a class="nav-main-link" href="https://software.sil.org/serve">Serve</a> </li> <li class="nav-main-item menu-item menu-item-type-post_type menu-item-object-page menu-item-8686"> <a class="nav-main-link" href="https://software.sil.org/about/">About</a> </li> </ul> </div> </div> </div> </nav> </header> <header id="page-site-name"> <div class="container"> <h1 class="page-header"><a href="https://software.sil.org">SIL Language Technology</a></h1> </div> </header> <header id="page-breadcrumbs"> <div class="container"> <h2 class="page-header"> <ol class="breadcrumb"> <li><a href="https://software.sil.org">Home</a></li> <li><a href=""><span class="last-crumb">TECkit</span></a></li> </ol> </h2> </div> </header> <section id="content_primary"> <div class="container"> <div class="row"> <div class="col-md-8 col-sm-8"> <article class="post-type-page" id="post-5284"> <section class="article-content"> <h1 class="article-h1"> TECkit </h1> <div class="article-body"> <p><em>a Text Encoding Conversion toolkit</em></p> <h2 id="about">About</h2> <p>TECkit is a low-level toolkit intended to be used by other applications that need to perform encoding conversions (e.g., when importing legacy data into a Unicode-based application). The primary component of the TECkit package is therefore a library that performs conversions; this is the “TECkit engine”. The engine relies on mapping tables in a specific binary format (for which documentation is available); there is a compiler that creates such tables from a human-readable mapping description (a simple text file).</p> <h3>Documentation</h3> <table class="download"> <tr> <td> <a class="getfile" href="https://software.sil.org/downloads/r/teckit/BeyondUTR22_pdf.pdf" onClick="gtag('event', 'SIL_DOWNLOADS', { 'product_name': 'teckit', 'product_version': 'Teckit Beyond UTR22: Complex Legacy-to-Unicode Mappings', 'download_link_type': 'table', 'product_os' : 'all platforms' });"> Beyond UTR22: complex legacy-to-Unicode mappings</a> </td> <td>for all platforms</td> <td> <span class="filemeta"> PDF | 195.1 KB | 31 Jul 2002 </span> </td> </tr> <tr> <td> <a class="getfile" href="https://software.sil.org/downloads/r/teckit/TECkit_Tools.pdf" onClick="gtag('event', 'SIL_DOWNLOADS', { 'product_name': 'teckit', 'product_version': 'TECkit Tools: A Text Encoding Conversion toolkit', 'download_link_type': 'table', 'product_os' : 'all platforms' });"> TECkit Tools: A Text Encoding Conversion toolkit</a> </td> <td>for all platforms</td> <td> <span class="filemeta"> PDF | 285.4 KB | 12 Nov 2021 </span> </td> </tr> <tr> <td> <a class="getfile" href="https://software.sil.org/downloads/r/teckit/TECkit_Language.pdf" onClick="gtag('event', 'SIL_DOWNLOADS', { 'product_name': 'teckit', 'product_version': 'The TECkit Language: Mapping byte encodings to Unicode', 'download_link_type': 'table', 'product_os' : 'all platforms' });"> The TECkit Language: Mapping byte encodings to Unicode</a> </td> <td>for all platforms</td> <td> <span class="filemeta"> PDF | 441.4 KB | 12 Nov 2021 </span> </td> </tr> </table> <p><strong>Further documentation is included in the Windows release archive.</strong></p> <div class="top border"><a href="#top">top</a></div> <h2 id="downloads">Downloads</h2> <p>Changes in this release:</p> <ul> <li>Updated Unicode character names and normalization data to 14.0.0</li> <li>Updated documentation</li> </ul> <h3>Windows Release</h3> <p>Tools, libraries, documentation, and samples are included in the .zip archive. Command line tools are teckit_compile.exe, txtconv.exe, and sfconv.exe.</p> <table class="download"> <tr> <td> <a class="getfile" href="https://software.sil.org/downloads/r/teckit/TECkit-2.5.11.zip" onClick="gtag('event', 'SIL_DOWNLOADS', { 'product_name': 'teckit', 'product_version': 'TECkit for Windows 2.5.11', 'download_link_type': 'table', 'product_os' : 'windows' });"> TECkit for Windows 2.5.11</a> </td> <td>for windows</td> <td> <span class="filemeta"> ZIP | 9.96 MB | 8 Nov 2021 </span> </td> </tr> </table> <h3>Ubuntu Linux Release</h3> <p>Ubuntu includes TECkit. More recent releases of TECkit might be available for Ubuntu releases from <a href="http://packages.sil.org/" target="_blank" rel="noopener">http://packages.sil.org/</a>. The PDF documentation is not in the Linux package, Linux users should obtain the PDF files from the Windows release.</p> <h3>macOS Release</h3> <p>Disk image for macOS containing the TECkit libraries and Unix command-line tools (teckit_compile, txtconv, sfconv) and documentation.</p> <table class="download"> <tr> <td> <a class="getfile" href="https://software.sil.org/downloads/r/teckit/TECkit-2.5.11.dmg" onClick="gtag('event', 'SIL_DOWNLOADS', { 'product_name': 'teckit', 'product_version': 'TECkit for macOS 2.5.11', 'download_link_type': 'table', 'product_os' : 'macos' });"> TECkit for macOS 2.5.11</a> </td> <td>for macos</td> <td> <span class="filemeta"> DMG | 2.60 MB | 5 Jan 2022 </span> </td> </tr> </table> <h3>Source</h3> <p>The TECkit package is copyright ©2002-2021 SIL International. It is being made available as free software but without any warranty; see the <a href="https://github.com/silnrsi/teckit/blob/master/license/LICENSING.txt" target="_blank" rel="noopener">license</a> for more information.</p> <h4>Source code and additional downloads</h4> <p>The TECkit source code is available from GitHub at <a href="https://github.com/silnrsi/teckit" target="_blank" rel="noopener">https://github.com/silnrsi/teckit</a>.</p> <p>Additional downloads for technical users are at <a href="https://github.com/silnrsi/teckit/releases" target="_blank" rel="noopener">https://github.com/silnrsi/teckit/releases</a>. The code is expected to compile and run on typical Unix/Linux systems using standard commands:</p> <pre><code>./configure make make install </code></pre> <h3>Previous Versions</h3> <h4>Windows Release</h4> <table class="download"> <tr> <td> <a class="getfile" href="https://software.sil.org/downloads/r/teckit/TECkit-2.5.10.zip" onClick="gtag('event', 'SIL_DOWNLOADS', { 'product_name': 'teckit', 'product_version': 'TECkit for Windows 2.5.10', 'download_link_type': 'table', 'product_os' : 'windows' });"> TECkit for Windows 2.5.10</a> </td> <td>for windows</td> <td> <span class="filemeta"> ZIP | 9.95 MB | 13 May 2020 </span> </td> </tr> <tr> <td> <a class="getfile" href="https://software.sil.org/downloads/r/teckit/TECkit-2.5.9.zip" onClick="gtag('event', 'SIL_DOWNLOADS', { 'product_name': 'teckit', 'product_version': 'TECkit for Windows 2.5.9', 'download_link_type': 'table', 'product_os' : 'windows' });"> TECkit for Windows 2.5.9</a> </td> <td>for windows</td> <td> <span class="filemeta"> ZIP | 9.88 MB | 18 Mar 2019 </span> </td> </tr> </table> <h4>MacOS Release</h4> <table class="download"> <tr> <td> <a class="getfile" href="https://software.sil.org/downloads/r/teckit/TECkit-2.5.10.dmg" onClick="gtag('event', 'SIL_DOWNLOADS', { 'product_name': 'teckit', 'product_version': 'TECkit for macOS 2.5.10', 'download_link_type': 'table', 'product_os' : 'macos' });"> TECkit for macOS 2.5.10</a> </td> <td>for macos</td> <td> <span class="filemeta"> DMG | 2.64 MB | 13 May 2020 </span> </td> </tr> <tr> <td> <a class="getfile" href="https://software.sil.org/downloads/r/teckit/TECkit-2.5.9.dmg" onClick="gtag('event', 'SIL_DOWNLOADS', { 'product_name': 'teckit', 'product_version': 'TECkit for macOS 2.5.9', 'download_link_type': 'table', 'product_os' : 'macos' });"> TECkit for macOS 2.5.9</a> </td> <td>for macos</td> <td> <span class="filemeta"> DMG | 2.63 MB | 18 Mar 2019 </span> </td> </tr> </table> <div class="top border"><a href="#top">top</a></div> <h2 id="support">Support</h2> <p>More information is available through the <a href="https://github.com/silnrsi/teckit" target="_blank" rel="noopener">TECKit github repo</a>. The Github repo does have an Issue tracker.</p> <h3>Frequently Asked Questions</h3> <h4>For mapping authors</h4> <h5><em>Why do all my spaces (or line ends) get mangled?</em></h5> <p>When mapping between bytes and Unicode, every character code that you are interested in needs to be mapped appropriately by the table. If you map only the visible characters, or worse still, only those where your legacy encoding differed from standard ASCII, everything else will be mapped to the default replacement character, typically U+FFFD. This applies to characters such as space, tab, carriage-return and line-feed just as to printable characters.</p> <p>Note that byte-only or Unicode-only mappings (or passes within multi-pass mapping) work differently: they will pass unmapped characters through unchanged. But in byte-Unicode mappings, which are the major focus of TECkit, anything that is not explicitly mapped will be replaced by the default code.</p> <h5><em>The compiler reports “code space mismatch”; what does that mean?</em></h5> <p>This (rather cryptic) error message means that the mapping description includes multiple passes, and the output of one pass is not in the same “code space” (either bytes or Unicode) as the input of the next pass.</p> <p>The compiler reports this error when it reaches the <em>end</em> of the second of the incompatible passes (which may be the very end of the file); the actual problem lies at the <em>beginning</em> of the pass, where it is chained with the preceding one.</p> <p>One subtle way this error can arise is if you intend to have a single pass in the mapping, and use an explicit <code>pass(Byte_Unicode)</code> statement, but accidentally place some part of the mapping content <em>before</em> the <code>pass</code> statement. Any <code>Class</code> definitions or mapping rules found before any <code>pass</code> statement will implicitly begin a Byte/Unicode mapping pass. (This is a legacy of the original, single-pass TECkit system.) When your explicit <code>pass(Byte_Unicode)</code> statement is read, this begins a <em>second</em> pass, and you can’t chain two Byte/Unicode passes: the Unicode output of the first can’t become Byte input to the second.</p> <h4>For application developers</h4> <h5><em>How big of an output buffer should I use when calling Convert or Flush?</em></h5> <p>In general, you can’t be sure; mappings are not necessarily one-to-one. Unless the input is ridiculously large, it’s probably best to allocate a buffer that would allow for a 50% or even 100% increase in the number of character codes; however, you must still be prepared for the possibility that the engine will return <code>kStatus_OutputBufferFull</code>. If this happens, either enlarge your buffer or clear out the output that has been generated so far—write it out, send it to the next process, or whatever is appropriate—so that you can restart at the beginning of your buffer.</p> <p>If you can’t afford such a generous buffer, you can use a smaller one and expect to do more looping. But your buffer must be at least big enough for the engine to perform a complete unit of conversion work, and this may result in a sequence of characters being output, not just a single code.</p> <h5><em>Why do I get <code>kStatus_OutputBufferFull</code>, when it isn’t?</em></h5> <p>When you call Convert or Flush, the TECkit engine does not necessarily use all the space in your output buffer. It may return <code>kStatus_OutputBufferFull</code> even though there is some space remaining.</p> <p>There are two reasons for this. First, the engine never puts a partial Unicode character into the output buffer. A single Unicode character may require up to 4 bytes, depending on the encoding form and the particular character, so if less than 4 bytes are available, the engine may report that the buffer is full because the next character it wants to write won’t fit in its entirety.</p> <p>Second (and this applies even when mapping to bytes), the engine does not like to return with an input code partially processed. And processing a single input code may result in multiple characters of output, either because the input code itself maps to a sequence or because it provides the context needed to determine the mapping preceding codes that have been buffered by the engine because their mappings depended on following context.</p> <p>So the engine may report <code>kStatus_OutputBufferFull</code> even when a considerable number of bytes remain unused. In extreme cases, unlikely in real-life mappings, this could be several hundred bytes, but cases where a dozen or more bytes are needed in the output buffer to process a single input code definitely occur. This status code always means that you need to create more output buffer space, either by enlargement or by clearing previous output, even if your buffer was not completely full.</p> <h5><em>How can I detect if there were characters TECkit couldn’t map?</em></h5> <p>By default, the TECkit engine maps all input characters to something in the output; characters for which no explicit mapping was given in the table will result in the “default replacement character”. (This is 0x3F ASCII ‘?’ by default when mapping to bytes, and U+FFFD REPLACEMENT CHARACTER by default when mapping to Unicode, but the mapping table author can change these values.)</p> <p>Beginning with TECkit version 2.1, released 29 March 2004, the engine has new conversion APIs (the <code>TECkit_ConvertBufferOpt</code> and <code>TECkit_FlushOpt</code> functions; see the <code>TECkit_Engine.h</code> header file). These allow the client application to control the behavior when unmappable input is encountered. The options are:</p> <ul> <li>Silently use the replacement character, as in previous versions of the engine.</li> <li>Use the replacement character, but return a warning status to the calling application.</li> <li>Stop converting and return an error code to the calling application.</li> </ul> <div class="top border"><a href="#top">top</a></div> <h2 id="contact">Contact</h2> <p>If you would like to report a problem, you can create an issue in TECKit’s <a href="https://github.com/silnrsi/teckit/issues" title="" class="external" target="_blank" rel="noopener">issue tracker</a>. Or, you can send an email via the contact form below.</p> <hr /> <div class="wpcf7 no-js" id="wpcf7-f408-o1" lang="en-US" dir="ltr"> <div class="screen-reader-response"><p role="status" aria-live="polite" aria-atomic="true"></p> <ul></ul></div> <form action="/teckit/#wpcf7-f408-o1" method="post" class="wpcf7-form init" aria-label="Contact form" novalidate="novalidate" data-status="init"> <div style="display: none;"> <input type="hidden" name="_wpcf7" value="408" /> <input type="hidden" name="_wpcf7_version" value="5.9.8" /> <input type="hidden" name="_wpcf7_locale" value="en_US" /> <input type="hidden" name="_wpcf7_unit_tag" value="wpcf7-f408-o1" /> <input type="hidden" name="_wpcf7_container_post" value="0" /> <input type="hidden" name="_wpcf7_posted_data_hash" value="" /> <input type="hidden" name="_wpcf7_recaptcha_response" value="" /> </div> <p>Your Name (<i>required</i>) </p> <p><span class="wpcf7-form-control-wrap" data-name="your-name"><input size="40" maxlength="400" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required" aria-required="true" aria-invalid="false" value="" type="text" name="your-name" /></span> </p> <p>Your Email (<i>required</i>) </p> <p><span class="wpcf7-form-control-wrap" data-name="your-email"><input size="40" maxlength="400" class="wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email" aria-required="true" aria-invalid="false" value="" type="email" name="your-email" /></span> </p> <p>Font </p> <p><span class="wpcf7-form-control-wrap" data-name="your-font"><select class="wpcf7-form-control wpcf7-select wpcf7-validates-as-required" aria-required="true" aria-invalid="false" name="your-font"><option value="">—Please choose an option—</option><option value="Abyssinica SIL">Abyssinica SIL</option><option value="Alkalami">Alkalami</option><option value="Andika">Andika</option><option value="Annapurna SIL">Annapurna SIL</option><option value="Arabic Fonts">Arabic Fonts</option><option value="Awami Nastaliq">Awami Nastaliq</option><option value="Charis SIL">Charis SIL</option><option value="Doulos SIL">Doulos SIL</option><option value="Gentium">Gentium</option><option value="Harmattan">Harmattan</option><option value="Lateef">Lateef</option><option value="Latin, Greek, and Cyrillic Fonts">Latin, Greek, and Cyrillic Fonts</option><option value="Padauk">Padauk</option><option value="Ruwudu">Ruwudu</option><option value="Scheherazade">Scheherazade</option><option value="Tai Heritage Pro">Tai Heritage Pro</option><option value="OTHER">OTHER</option></select></span> </p> <p>Subject </p> <p><span class="wpcf7-form-control-wrap" data-name="your-subject"><input size="40" maxlength="400" class="wpcf7-form-control wpcf7-text" aria-invalid="false" value="" type="text" name="your-subject" /></span> </p> <p>Your Message </p> <p><span class="wpcf7-form-control-wrap" data-name="your-message"><textarea cols="40" rows="10" maxlength="2000" class="wpcf7-form-control wpcf7-textarea" aria-invalid="false" name="your-message"></textarea></span> </p> <p> </p> <p><input class="wpcf7-form-control wpcf7-submit has-spinner" type="submit" value="Send" /><input type="reset" text="Reset" onclick="javascript:grecaptcha.reset();" /> </p><p style="display: none !important;" class="akismet-fields-container" data-prefix="_wpcf7_ak_"><label>Δ<textarea name="_wpcf7_ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="_wpcf7_ak_js" value="223"/><script>document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() );</script></p><div class="wpcf7-response-output" aria-hidden="true"></div> </form> </div> </div> </section> </article> </div> <div class="col-md-4 col-sm-4"> <nav id="sidebar_main" class="nav menu"> <div> <div class="textwidget"><img class="sps-sidebar-logo" src="https://software.sil.org/wp/wp-content/uploads/2017/01/cropped-2014_sil_logo_80w_96h.png" title="TECkit"></div> </div><div> <div class="textwidget"><p><div class="menu-single-page-site-menu-container"><ul id="menu-single-page-site-menu" class="menu"><li class="menu-item menu-item-type-custom menu-item-object-custom"><a href="#about">About</a></li><li class="menu-item menu-item-type-custom menu-item-object-custom"><a href="#downloads">Downloads</a></li><li class="menu-item menu-item-type-custom menu-item-object-custom"><a href="#support">Support</a></li><li class="menu-item menu-item-type-custom menu-item-object-custom"><a href="#contact">Contact</a></li></ul></div><br /> <section class="download-section"> <h2>Current Version</h2> <a class="btn btn-default btn-block btn-download" href="https://software.sil.org/downloads/r/teckit/TECkit-2.5.11.zip" onClick="gtag('event', 'SIL_DOWNLOADS', { 'product_name': 'teckit', 'product_version': 'TECkit for Windows 2.5.11', 'download_link_type': 'button', 'product_os' : 'windows' });">Download Now<i class="fa fa-download fa-download-style"></i></a> <div class="download-name">TECkit for Windows 2.5.11 for Windows</div> <div class="filemeta"> ZIP | 9.96 MB | 8 Nov 2021 </div> </section> </p> </div> </div><div><h2>WSTech Resources</h2><div class="menu-wstechsidebar-container"><ul id="menu-wstechsidebar" class="menu"><li id="menu-item-3013" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3013"><a href="https://keyman.com/">Keyman</a></li> <li id="menu-item-3014" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3014"><a href="https://software.sil.org/fonts">Fonts</a></li> <li id="menu-item-3015" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3015"><a href="https://github.com/silnrsi/">Font & WS Tools</a></li> <li id="menu-item-5206" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5206"><a href="https://software.sil.org/fonts/guides/">Font Help Guides</a></li> <li id="menu-item-3016" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3016"><a href="http://graphite.sil.org">Graphite</a></li> <li id="menu-item-5425" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-5284 current_page_item menu-item-5425"><a href="https://software.sil.org/teckit/" aria-current="page">TECkit</a></li> <li id="menu-item-5424" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5424"><a href="https://software.sil.org/silconverters/">SIL Converters</a></li> <li id="menu-item-3017" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3017"><a href="http://scriptsource.org">ScriptSource</a></li> <li id="menu-item-3018" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3018"><a href="https://github.com/silnrsi/sldr">SLDR</a></li> <li id="menu-item-3019" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3019"><a href="https://software.sil.org/support/">Support</a></li> <li id="menu-item-3020" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3020"><a href="https://software.sil.org/about/contact/">Contact</a></li> </ul></div></div> </nav> </div> </div> </div> </section> <div class="footer-top-bg"> <aside id="license"> <div class="container fullwidth"> <div> <div class="textwidget"><p>Most SIL software is free to use, modify and redistribute according to the terms of open licenses such as the <a class="external" href="https://openfontlicense.org" target="_blank" rel="noopener">SIL Open Font License</a> and the <a class="external" href="http://en.wikipedia.org/wiki/MIT_License" target="_blank" rel="noopener">MIT License</a>. Many of our open projects are hosted on our <a class="external" href="https://github.com/sillsdev" target="_blank" rel="noopener">Language Software development</a> and <a class="external" href="https://github.com/silnrsi" target="_blank" rel="noopener">Writing Systems Technology</a> GitHub pages.</p> </div> </div> </div> </aside> <aside id="donate"> <div class="container fullwidth"> <div> <div class="textwidget"><p>Please consider supporting our software development through a <a href="https://give.sil.org/LangTech">donation</a> toward our language software or our fonts and script resources.</p> </div> </div> </div> </aside> </div> <footer class="footer-top"> <div class="container"> <div class="row"> <nav class="col-xs-7 col-md-3"> <div><h2>SIL Global</h2><div class="menu-footer_sil-container"><ul id="menu-footer_sil" class="menu"><li id="menu-item-89" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-89"><a href="http://www.sil.org/about/discover">Discover SIL</a></li> <li id="menu-item-90" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-90"><a href="http://www.sil.org/langculture">Language & Culture</a></li> <li id="menu-item-91" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-91"><a href="http://www.sil.org/language-development">Language Development</a></li> <li id="menu-item-92" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-92"><a href="http://www.sil.org/about/news">SIL News</a></li> </ul></div></div> </nav> <nav class="col-xs-5 col-md-3"> <div><h2>Language Technology</h2><div class="menu-footer_software-container"><ul id="menu-footer_software" class="menu"><li id="menu-item-8687" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-8687"><a href="https://software.sil.org/software-products/">Software Products</a></li> <li id="menu-item-8688" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-8688"><a href="https://software.sil.org/news/">Software & Font News</a></li> <li id="menu-item-113" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-113"><a target="_blank" rel="noopener" href="http://lingtransoft.info/">LingTranSoft</a></li> <li id="menu-item-99" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-99"><a target="_blank" rel="noopener" href="http://www.ethnologue.com/">Ethnologue</a></li> <li id="menu-item-100" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-100"><a href="https://iso639-3.sil.org">Language Codes (ISO 639-3)</a></li> </ul></div></div> </nav> <nav class="col-xs-7 col-md-3"> <div><h2>Fonts & Writing Systems</h2><div class="menu-footer_fonts-container"><ul id="menu-footer_fonts" class="menu"><li id="menu-item-8708" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-8708"><a href="https://software.sil.org/fonts/">Font Catalog</a></li> <li id="menu-item-5204" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5204"><a href="https://software.sil.org/fonts/guides/">Font Help Guides</a></li> <li id="menu-item-94" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-94"><a target="_blank" rel="noopener" href="http://scriptsource.org">ScriptSource</a></li> <li id="menu-item-95" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-95"><a target="_blank" rel="noopener" href="http://scripts.sil.org">Computers & Writing Systems</a></li> <li id="menu-item-98" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-98"><a target="_blank" rel="noopener" href="https://openfontlicense.org">SIL Open Font License</a></li> </ul></div></div> </nav> <nav class="col-xs-5 col-md-3"> <div><h2>Contact & Support</h2><div class="menu-footer_contact-container"><ul id="menu-footer_contact" class="menu"><li id="menu-item-2631" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2631"><a href="https://community.software.sil.org/">Language Software Forum</a></li> <li id="menu-item-8690" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8690"><a href="https://community.scripture.software.sil.org">Scripture Software Forum</a></li> <li id="menu-item-2632" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2632"><a href="https://software.sil.org/support/">General Software Support</a></li> <li id="menu-item-8684" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8684"><a href="https://software.sil.org/serve">Serve with Us</a></li> <li id="menu-item-8683" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-8683"><a href="https://software.sil.org/about/">About Us</a></li> <li id="menu-item-5862" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5862"><a href="https://software.sil.org/about/contact/">Contact Us</a></li> </ul></div></div> </nav> </div> </div> </footer> <script type="text/javascript"> /* <![CDATA[ */ var relevanssi_rt_regex = /(&|\?)_(rt|rt_nonce)=(\w+)/g var newUrl = window.location.search.replace(relevanssi_rt_regex, '') history.replaceState(null, null, window.location.pathname + newUrl + window.location.hash) /* ]]> */ </script> <span aria-hidden="true" id="to_top_scrollup" class="dashicons dashicons-arrow-up-alt2"><span class="screen-reader-text">Scroll Up</span></span> <!--noptimize--><script type='text/javascript'> /* <![CDATA[ */ r3f5x9JS=escape(document['referrer']); hf4N='ac724b4e58e0c4c670ab86b90236913c'; hf4V='820ad0b387c7edcdb2c732a992965669'; jQuery(document).ready(function($){var e="#commentform, .comment-respond form, .comment-form, #lostpasswordform, #registerform, #loginform, #login_form, #wpss_contact_form, .wpcf7-form";$(e).submit(function(){$("<input>").attr("type","hidden").attr("name","r3f5x9JS").attr("value",r3f5x9JS).appendTo(e);return true;});var h="form[method='post']";$(h).submit(function(){$("<input>").attr("type","hidden").attr("name",hf4N).attr("value",hf4V).appendTo(h);return true;});}); /* ]]> */ </script><!--/noptimize--> <script type="text/javascript" src="https://software.sil.org/wp/wp-includes/js/dist/hooks.min.js?ver=2810c76e705dd1a53b18" id="wp-hooks-js"></script> <script type="text/javascript" src="https://software.sil.org/wp/wp-includes/js/dist/i18n.min.js?ver=5e580eb46a90c2b997e6" id="wp-i18n-js"></script> <script type="text/javascript" id="wp-i18n-js-after"> /* <![CDATA[ */ wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); /* ]]> */ </script> <script type="text/javascript" src="https://software.sil.org/wp/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=5.9.8" id="swv-js"></script> <script type="text/javascript" id="contact-form-7-js-extra"> /* <![CDATA[ */ var wpcf7 = {"api":{"root":"https:\/\/software.sil.org\/wp-json\/","namespace":"contact-form-7\/v1"},"cached":"1"}; /* ]]> */ </script> <script type="text/javascript" src="https://software.sil.org/wp/wp-content/plugins/contact-form-7/includes/js/index.js?ver=5.9.8" id="contact-form-7-js"></script> <script type="text/javascript" src="https://software.sil.org/wp/wp-content/themes/web-productsites/js/site.js?ver=1c3f99931113e4e267889c96f3b63dc5" id="silps-site.js-js"></script> <script type="text/javascript" src="https://software.sil.org/wp/wp-content/themes/web-productsites/vendor/twbs/bootstrap/dist/js/bootstrap.min.js?ver=1c3f99931113e4e267889c96f3b63dc5" id="silps-bootstrap.min.js-js"></script> <script type="text/javascript" src="https://www.google.com/recaptcha/api.js?render=6LfrnMwgAAAAAFs26j2z34FZDEERn1Th5caKwvIv&ver=3.0" id="google-recaptcha-js"></script> <script type="text/javascript" src="https://software.sil.org/wp/wp-includes/js/dist/vendor/wp-polyfill.min.js?ver=3.15.0" id="wp-polyfill-js"></script> <script type="text/javascript" id="wpcf7-recaptcha-js-extra"> /* <![CDATA[ */ var wpcf7_recaptcha = {"sitekey":"6LfrnMwgAAAAAFs26j2z34FZDEERn1Th5caKwvIv","actions":{"homepage":"homepage","contactform":"contactform"}}; /* ]]> */ </script> <script type="text/javascript" src="https://software.sil.org/wp/wp-content/plugins/contact-form-7/modules/recaptcha/index.js?ver=5.9.8" id="wpcf7-recaptcha-js"></script> <script type="text/javascript" src="https://software.sil.org/wp/wp-content/plugins/wp-spamshield/js/jscripts-ftr2-min.js" id="wpss-jscripts-ftr-js"></script> <script type="text/javascript" src="https://software.sil.org/wp/wp-includes/js/hoverIntent.min.js?ver=1.10.2" id="hoverIntent-js"></script> <script type="text/javascript" id="megamenu-js-extra"> /* <![CDATA[ */ var megamenu = {"timeout":"300","interval":"100"}; /* ]]> */ </script> <script type="text/javascript" src="https://software.sil.org/wp/wp-content/plugins/megamenu/js/maxmegamenu.js?ver=3.3.1.2" id="megamenu-js"></script> <style type="text/css" id="custom_inline_style_0"> @media (max-width: 759px) { #content_primary > .container > .row { display: flex; flex-flow: column-reverse; } }</style> <footer class="footer-bottom"> <div class="container"> <div class="row"> <nav class="col-xs-12 col-md-6"> <p>Copyright © 2024 <a href="https://www.sil.org/" title="" class="active">SIL Global</a></p> </nav> <nav class="col-xs-12 col-md-6"> <ul class="nav nav-horizontal"> <li class="first leaf active"><a href="/terms-of-use" title="" class="active">Terms of Use</a></li> <li class="last leaf active"><a href="/privacy-policy" title="" class="active">Privacy Policy</a></li> </ul> </nav> </div> </div> </footer> </body> </html> <!-- Dynamic page generated in 0.904 seconds. --> <!-- Cached page generated by WP-Super-Cache on 2024-11-23 18:22:35 --> <!-- Compression = gzip -->