{"id":24097373,"url":"https://github.com/n8willis/opentype-shaping-documents","last_synced_at":"2026-01-25T07:36:28.032Z","repository":{"id":29292398,"uuid":"105050391","full_name":"n8willis/opentype-shaping-documents","owner":"n8willis","description":"Documentation of OpenType shaping behavior","archived":false,"fork":false,"pushed_at":"2024-10-23T15:09:15.000Z","size":12499,"stargazers_count":173,"open_issues_count":58,"forks_count":14,"subscribers_count":32,"default_branch":"master","last_synced_at":"2025-01-10T13:48:42.089Z","etag":null,"topics":["complex-scripts","opentype","opentype-features","opentype-fonts","unicode"],"latest_commit_sha":null,"homepage":null,"language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/n8willis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-27T17:50:59.000Z","updated_at":"2024-12-17T05:48:58.000Z","dependencies_parsed_at":"2023-02-12T16:31:37.488Z","dependency_job_id":"eba68dd5-eebf-47f6-9a06-b850fdea64c1","html_url":"https://github.com/n8willis/opentype-shaping-documents","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n8willis%2Fopentype-shaping-documents","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n8willis%2Fopentype-shaping-documents/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n8willis%2Fopentype-shaping-documents/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n8willis%2Fopentype-shaping-documents/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/n8willis","download_url":"https://codeload.github.com/n8willis/opentype-shaping-documents/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241024623,"owners_count":19896271,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["complex-scripts","opentype","opentype-features","opentype-fonts","unicode"],"created_at":"2025-01-10T13:44:10.701Z","updated_at":"2026-01-25T07:36:28.027Z","avatar_url":"https://github.com/n8willis.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"```{include} /_global.md\n```\n\n# OpenType shaping documents #\n\nSponsored by [YesLogic](https://yeslogic.com/) \n\n_\u003caside\u003eThanks also to the developers of HarfBuzz and AllSorts, plus many other font engineers and text-encoding experts for their generosity of time and insightful contributions.\u003c/aside\u003e_\n\n## \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026#127366; \u0026#127344; \u0026#127361; \u0026#127357; \u0026#127352; \u0026#127357; \u0026#127350; ##\n\u003e\n\u003e This repository is an active WORK IN PROGRESS.\n\u003e\n\u003e NONE of the documents you currently see here are complete\n\u003e nor are they suitable for reference. PLEASE do not use\n\u003e them as a guide or as a general information source.\n\u003e\n\u003e As long as this warning text remains visible, the above \n\u003e holds true. \n\nAt present, we are seeking comments and bugfixes on the Indic-script,\nArabic-like, Hangul, Hebrew, Thai/Lao, Tibetan, Khmer, Myanmar,\ndefault, and \u003cabbr title=\"Universal Shaping Engine\"\u003eUSE\u003c/abbr\u003e documents. Interested readers and contributors can\nbegin at the\n\n  - [Indic General](opentype-shaping-indic-general.md) \n    - (Devanagari, Bengali, Gujarati, Gurmukhi, Kannada, Malayalam,\n      Oriya, Tamil, Telugu, Sinhala) \n  - [Arabic General](opentype-shaping-arabic-general.md)\n    - (Arabic, N'Ko, Syriac, Mongolian)\n  - [Hangul](opentype-shaping-hangul.md)\n  - [Hebrew](opentype-shaping-hebrew.md)\n  - [Khmer](opentype-shaping-khmer.md)\n  - [Thai and Lao](opentype-shaping-thai-lao.md)\n  - [Tibetan](opentype-shaping-tibetan.md)\n  - [Myanmar](opentype-shaping-myanmar.md)\n  - [Universal Shaping Engine (\u003cabbr\u003eUSE\u003c/abbr\u003e)](opentype-shaping-use.md)\n    - All complex scripts that are not handled by a dedicated\n      script-specific shaping model\n  - [Default](opentype-shaping-default.md)\n    - All non-complex scripts\n  - [Emoji](opentype-shaping-emoji.md)\n    - Emoji sequences do not constitute a separate shaping model,\n      but handling emoji sequences can incorporate many of the same\n      Opentype mechanisms and should not be overlooked\n  \nshaping documents and are encouraged to submit their feedback\non the text or images of any of the linked scripts. The documents are\norganized by script; where there are multiple shaping models for a\nparticular script (including deprecated models), the various models are\nall addressed in the same script-specific document.\n\nThe documents also include a description of\n[normalization](opentype-shaping-normalization.md) in the OpenType\nshaping context, which differs from Unicode normalization in several\nrespects.\n\nVarious [notes](notes/README.md) about the document set and the details\nof its scope, limitations, and quirks are also provided.\n\nSome [errata](errata.md) about the \"upstream\" specifications and\nreference documents are noted separately. \n\nIn its final form, this repository will hold documentation describing\nthe shaping behavior used for layout of OpenType text. In particular,\nit will focus on complex scripts.\n\nIn addition to the primary, per-script documents, implementers and\nother interesteed readers are encouraged to check the\n[character tables](character-tables/README.md) for correctness and to\nexamine the [image-generation logs](/images/README.md) to identify\nissues seen in the inline images.\n\n### References\n\nThese documents cite the following informative references:\n\n1. The Microsoft [Script development\n   specifications](https://docs.microsoft.com/en-us/typography/script-development/standard),\n   which document the behaviors expected for OpenType Layout fonts and\n   provide guidance \u0026amp; examples for type designers. OpenType is a\n   registered trademark of Microsoft Corporation. \n2. Related portions of the Microsoft OpenType specification, such as the\n   [OpenType Layout tag\n   registry](https://docs.microsoft.com/en-us/typography/opentype/spec/ttoreg)\n   and [OpenType Layout common table\n   formats](https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2),\n   which list and define feature tags, script \u0026amp; language tags, and\n   other internals of compliant OpenType font binaries. OpenType is a\n   registered trademark of Microsoft Corporation. \n3. The [HarfBuzz](https://github.com/harfbuzz/harfbuzz) project, which\n   includes a free-software/open-source implementation of OpenType\n   Layout shaping with full source code and documentation. \n4. The [AllSorts](https://github.com/yeslogic/allsorts) project, which\n   includes a free-software/open-source implementation of OpenType\n   Layout shaping with full source code and documentation.\n5. The [Unicode\n   Standard](http://www.unicode.org/standard/standard.html) and\n   related Unicode Consortium projects such as the [Unicode Character\n   Database](http://www.unicode.org/reports/tr44/), which defines\n   Unicode code points and formal character properties used in\n   shaping. Unicode and the Unicode Logo are registered trademarks of\n   Unicode, Inc. in the United States and other countries.\n6. The YesLogic [text corpus](https://github.com/yeslogic/corpus),\n   which includes real-world text data for several Indic scripts,\n   scraped from Wikipedia, Reddit, and multiple online news\n   sources. This data is used to test shaping in AllSorts and Prince.\n7. Known but unofficial information about other shaping-engine\n   projects. Primarily this includes tests and reproducible issues\n   found via [HarfBuzz](https://github.com/harfbuzz/harfbuzz), because\n   HarfBuzz intentionally aims to produce results that will 100% match\n   the output of Microsoft Uniscribe (not counting cases where\n   Uniscribe's output is known to be incorrect, of course).\n   \u003e Note: occasionally, tests or issues documenting the behavior of\n   \u003e Apple CoreText are also included, but CoreText compatibility is\n   \u003e not an explicit goal for HarfBuzz.\n   \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fn8willis%2Fopentype-shaping-documents","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fn8willis%2Fopentype-shaping-documents","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fn8willis%2Fopentype-shaping-documents/lists"}