{"id":13721786,"url":"https://github.com/Tehreer/SheenFigure","last_synced_at":"2025-05-07T14:30:43.960Z","repository":{"id":87264385,"uuid":"68462530","full_name":"Tehreer/SheenFigure","owner":"Tehreer","description":"An implementation of advanced typographic tables of OpenType specification.","archived":false,"fork":false,"pushed_at":"2023-11-17T16:08:12.000Z","size":1222,"stargazers_count":32,"open_issues_count":8,"forks_count":6,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-10T02:17:29.223Z","etag":null,"topics":["ansi-c","arabic-shaping","c","c-plus-plus","c89","library","opentype","opentype-features","opentype-fonts","opentype-specification","text-shaping","typographic-tables","unicode","variable-fonts"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Tehreer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-09-17T16:04:36.000Z","updated_at":"2024-11-22T10:14:50.000Z","dependencies_parsed_at":"2023-03-03T04:15:27.323Z","dependency_job_id":null,"html_url":"https://github.com/Tehreer/SheenFigure","commit_stats":null,"previous_names":["mta452/sheenfigure"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tehreer%2FSheenFigure","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tehreer%2FSheenFigure/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tehreer%2FSheenFigure/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tehreer%2FSheenFigure/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Tehreer","download_url":"https://codeload.github.com/Tehreer/SheenFigure/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252895473,"owners_count":21821167,"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":["ansi-c","arabic-shaping","c","c-plus-plus","c89","library","opentype","opentype-features","opentype-fonts","opentype-specification","text-shaping","typographic-tables","unicode","variable-fonts"],"created_at":"2024-08-03T01:01:21.346Z","updated_at":"2025-05-07T14:30:43.423Z","avatar_url":"https://github.com/Tehreer.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"SheenFigure\n=========\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![Build Status](https://api.travis-ci.org/Tehreer/SheenFigure.svg?branch=master)](https://travis-ci.org/Tehreer/SheenFigure)\n[![Coverage Status](https://coveralls.io/repos/github/Tehreer/SheenFigure/badge.svg?branch=master)](https://coveralls.io/github/Tehreer/SheenFigure?branch=master)\n\nSheenFigure aims to implement the advanced typographic tables of OpenType specification available at https://www.microsoft.com/en-us/Typography/OpenTypeSpecification.aspx along with script specific shaping engines available at https://www.microsoft.com/en-us/Typography/SpecificationsOverview.aspx. Currently, it only supports Arabic script and a subset of [GDEF](https://www.microsoft.com/typography/otspec/GDEF.htm), [GSUB](https://www.microsoft.com/typography/otspec/GSUB.htm) and [GPOS](https://www.microsoft.com/typography/otspec/GPOS.htm) tables. The support is intended to increase in each newer versions of the library.\n\nHere are some of the advantages of SheenFigure.\n\n* Object based\n* Designed to be thread safe\n* Lightweight API for interaction\n* Clear differentiation of public and private API\n* Thoroughly tested\n\n## Dependency\nSheenFigure only depends on [SheenBidi](https://github.com/mta452/SheenBidi) in order to support UTF-8, UTF-16 and UTF-32 string encodings. Other than that, it only uses standard C library headers ```stddef.h```, ```stdint.h```, ```stdlib.h``` and  ```string.h```.\n\n## Configuration\nThe configuration options are available in `Headers/SFConfig.h`.\n\n* ```SF_CONFIG_UNITY``` builds the library as a single module and lets the compiler make decisions to inline functions.\n\n## Compiling\nSheenFigure can be compiled with any C compiler. The best way for compiling is to add all the files in an IDE and hit build. The only thing to consider however is that if ```SF_CONFIG_UNITY``` is enabled then only ```Source/SheenFigure.c``` should be compiled.\n\n## Public API\nHere is a glimpse of public API in the form of UML class diagram.\n![Public API](https://raw.githubusercontent.com/mta452/SheenFigure/images/PublicAPI.png)\n\n## Conformance\nFollowing are the tables implemented by SheenFigure.\n\n### OpenType Layout Common Table Formats\n| Table            \t| Supported \t|\n|------------------\t|:---------:\t|\n| Script List      \t|     ✔️     \t|\n| Feature List     \t|     ✔️     \t|\n| Lookup List      \t|     ✔️     \t|\n| Coverage         \t|     ✔️     \t|\n| Class Definition \t|     ✔️     \t|\n| Device           \t|     ✔️     \t|\n| Variation Index  \t|     ✔️     \t|\n\n### GDEF (Glyph Definition Table)\n| Subtable                         \t| Supported \t|\n|----------------------------------\t|:---------:\t|\n| Glyph Class Definition           \t|     ✔️     \t|\n| Attachment List                  \t|     ❌     \t|\n| Ligature Caret List              \t|     ❌     \t|\n| Mark Attachment Class Definition \t|     ✔️     \t|\n| Mark Glyph Sets                  \t|     ✔️     \t|\n| Item Variation Store             \t|     ✔️     \t|\n\n### GPOS (Glyph Positioning Table)\n| Subtable                    \t| Format 1 \t| Format 2 \t| Format 3 \t|\n|-----------------------------\t|:--------:\t|:--------:\t|:--------:\t|\n| Single Adjustment           \t|     ✔️    \t|     ✔️    \t|          \t|\n| Pair Adjustment             \t|     ✔️    \t|     ✔️    \t|          \t|\n| Cursive Attachment          \t|     ✔️    \t|          \t|          \t|\n| Mark To Base Attachment     \t|     ✔️    \t|          \t|          \t|\n| Mark To Ligature Attachment \t|     ✔️    \t|          \t|          \t|\n| Mark To Mark Attachment     \t|     ✔️    \t|          \t|          \t|\n| Context Positioning         \t|     ✔️    \t|     ✔️    \t|     ✔️    \t|\n| Chained Context Positioning \t|     ✔️    \t|     ✔️    \t|     ✔️    \t|\n| Extension Positioning       \t|     ✔️    \t|          \t|          \t|\n\n### GSUB (Glyph Substitution Table)\n| Subtable                 \t| Format 1 \t| Format 2 \t| Format 3 \t|\n|--------------------------\t|:--------:\t|:--------:\t|:--------:\t|\n| Single                   \t|     ✔️    \t|     ✔️    \t|          \t|\n| Multiple                 \t|     ✔️    \t|          \t|          \t|\n| Alternate                \t|     ✔️    \t|          \t|          \t|\n| Ligature                 \t|     ✔️    \t|          \t|          \t|\n| Context                  \t|     ✔️    \t|     ✔️    \t|     ✔️    \t|\n| Chaining Context         \t|     ✔️    \t|     ✔️    \t|     ✔️    \t|\n| Extension                \t|     ✔️    \t|          \t|          \t|\n| Reverse Chaining Context \t|     ✔️    \t|          \t|          \t|\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTehreer%2FSheenFigure","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTehreer%2FSheenFigure","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTehreer%2FSheenFigure/lists"}