{"id":16747908,"url":"https://github.com/amake/isittofu","last_synced_at":"2025-04-10T13:51:56.681Z","repository":{"id":74600218,"uuid":"228872312","full_name":"amake/isittofu","owner":"amake","description":"Web app for figuring out if text will show up on mobile OSs","archived":false,"fork":false,"pushed_at":"2025-03-31T23:15:56.000Z","size":7547,"stargazers_count":4,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-31T23:29:39.825Z","etag":null,"topics":["android","flutter-apps","ios","mojibake","tofu","unicode"],"latest_commit_sha":null,"homepage":"https://tofu.quest","language":"Dart","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/amake.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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},"funding":{"github":"amake"}},"created_at":"2019-12-18T15:46:51.000Z","updated_at":"2025-03-31T23:13:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"2b6927d0-5e67-4f32-bba6-f115421d0fbe","html_url":"https://github.com/amake/isittofu","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/amake%2Fisittofu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amake%2Fisittofu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amake%2Fisittofu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amake%2Fisittofu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amake","download_url":"https://codeload.github.com/amake/isittofu/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248228622,"owners_count":21068726,"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":["android","flutter-apps","ios","mojibake","tofu","unicode"],"created_at":"2024-10-13T02:11:14.822Z","updated_at":"2025-04-10T13:51:56.665Z","avatar_url":"https://github.com/amake.png","language":"Dart","funding_links":["https://github.com/sponsors/amake"],"categories":[],"sub_categories":[],"readme":"# Is It Tofu?\n\nThis is a tool for figuring out if a given piece of text contains characters\nthat will become \"tofu\" on mobile platforms (specifically iOS and Android).\n\n\"Tofu\" refers to the blank white square (□) sometimes shown in place of an\nunsupported character.\n\n## Methodology\n\nThe input text is split up into UTF-16 Unicode code units, and is compared\nagainst data compiled by the\n[CodePointCoverage](https://github.com/amake/CodePointCoverage) project.\n\nCoverage is determined by inspecting the font files that are bundled with the\nOS. If there is at least one font providing a glyph (more specifically, with an\nentry in the `cmap` table) for a given codepoint, that codepoint is considered\n\"covered\".\n\nFor iOS, the fonts are taken from the iOS Simulator runtimes bundled with\nvarious versions of Xcode. For Android, the fonts are taken from the Android\nEmulator system images downloadable with the Android SDK.\n\nNote that this methodology is not completely accurate. Known issues:\n\n- Codepoints need not have their own glyphs to be considered \"supported\"; see\n  e.g. [variation\n  selectors](https://en.wikipedia.org/wiki/Variation_Selectors_(Unicode_block))\n- Codepoint-level analysis cannot account for support for multi-codepoint\n  grapheme clusters like [emoji ZWJ\n  sequences](https://www.unicode.org/emoji/charts/emoji-zwj-sequences.html)\n- Especially on Android, vendors may bundle different fonts. Even \"vanilla\"\n  Android may have different fonts from the SDK\n  ([example](https://github.com/amake/isittofu/issues/1))\n\nIf you find any inaccuracies, please feel free to [open an\nissue](https://github.com/amake/isittofu/issues).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famake%2Fisittofu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famake%2Fisittofu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famake%2Fisittofu/lists"}