{"id":26601032,"url":"https://github.com/googlefonts/exemplar","last_synced_at":"2026-04-14T06:33:43.969Z","repository":{"id":274566322,"uuid":"923332395","full_name":"googlefonts/exemplar","owner":"googlefonts","description":"JSON endpoints for CLDR exemplar data by locale tag","archived":false,"fork":false,"pushed_at":"2025-04-24T20:10:25.000Z","size":2951,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-07-25T18:13:15.213Z","etag":null,"topics":["api","casing","cldr","exemplar","fonts","i18n","icu4c","icu4j","internationalization","l10n","language","locale","localization","numbers","punctuation","unicode"],"latest_commit_sha":null,"homepage":"https://cdn.jsdelivr.net/gh/googlefonts/exemplar@1/api/data.json","language":"Python","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/googlefonts.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","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,"zenodo":null}},"created_at":"2025-01-28T03:25:50.000Z","updated_at":"2025-04-24T20:12:42.000Z","dependencies_parsed_at":"2025-01-28T04:26:26.802Z","dependency_job_id":"09eb2237-c5e6-4731-a2b7-e310c93edc10","html_url":"https://github.com/googlefonts/exemplar","commit_stats":null,"previous_names":["googlefonts/exemplar"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/googlefonts/exemplar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/googlefonts%2Fexemplar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/googlefonts%2Fexemplar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/googlefonts%2Fexemplar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/googlefonts%2Fexemplar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/googlefonts","download_url":"https://codeload.github.com/googlefonts/exemplar/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/googlefonts%2Fexemplar/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31785677,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T02:24:21.117Z","status":"ssl_error","status_checked_at":"2026-04-14T02:24:20.627Z","response_time":153,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["api","casing","cldr","exemplar","fonts","i18n","icu4c","icu4j","internationalization","l10n","language","locale","localization","numbers","punctuation","unicode"],"created_at":"2025-03-23T18:36:28.468Z","updated_at":"2026-04-14T06:33:43.954Z","avatar_url":"https://github.com/googlefonts.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Exemplar\n\n![API version](https://img.shields.io/badge/API%20version-v1-blue)\n![GitHub Release](https://img.shields.io/github/v/release/googlefonts/exemplar)\n![ICU version](https://img.shields.io/badge/dynamic/json?url=https://cdn.jsdelivr.net/gh/googlefonts/exemplar@1/api/data.json\u0026query=%24.icu_version\u0026label=ICU%20version)\n\n## About\n\nThe Exemplar API project JSON endpoints include Unicode CLDR (Common Locale Data Repository) exemplar encoding data by [Unicode locale](https://unicode-org.github.io/icu/userguide/locale/#the-locale-concept). The goal of this project is to provide simple GET client access to localized exemplar encoding data in a public, widely-supported JSON format endpoint.\n\nThis project leverages the [ICU (International Components for Unicode) library](https://unicode-org.github.io/icu/) to distribute software internationalization data that are consistent with the latest Unicode data standards.\n\n## Exemplar Data Categories\n\nThe following data are categorized by [Unicode locale](https://unicode-org.github.io/icu/userguide/locale/#the-locale-concept) tag:\n\n- **Main Exemplars** [main]\n  - Minimum base set of characters used in the language. Note: only includes lowercase for languages that support different case forms. [CLDR documentation](https://cldr.unicode.org/translation/core-data/exemplars#exemplar-characters)\n  - Example [Engish (United States)]: abcdefghijklmnopqrstuvwxyz\n  - Example [Vietnamese (Vietnam)]: aáàăắằẵẳâấầẫẩãảạặậbcdđeéèêếềễểẽẻẹệghiíìĩỉịklmnoóòôốồỗổõỏơớờỡởợọộpqrstuúùũủưứừữửựụvxyýỳỹỷỵ\n  - Example [Hindi (India)]:  ़ँंःॐअआइईउऊऋऌऍएऐऑओऔकखगघङचछजझञटठडढणतथदधनपफबभमयरलळवशषसहऽािीुूृॅेैॉोौ्\n- **Auxiliary Exemplars** [auxiliary]\n  - Foreign borrowings and specialized usage exemplars in the language. [CLDR documentation](https://cldr.unicode.org/translation/core-data/exemplars#exemplar-characters)\n  - Example [Engish (United States)]: áàăâåäãāæçéèĕêëēíìĭîïīñóòŏôöøōœúùŭûüūÿ\n  - Example [Vietnamese (Vietnam)]: fjwz\n  - Example [Hindi (India)]: ‌‍ॄ\n- **Case-insensitive Exemplars** [case_insensitive]\n  - Defines exemplar equivalence, irrespective of case, in the language.\n  - Example [Engish (United States)]: aAbBcCdDeEfFgGhHiIjJkKKlLmMnNoOpPqQrRsSſtTuUvVwWxXyYzZ\n  - Example [Vietnamese (Vietnam)]: aAáÁàÀăĂắẮằẰẵẴẳẲâÂấẤầẦẫẪẩẨãÃảẢạẠặẶậẬbBcCdDđĐeEéÉèÈêÊếẾềỀễỄểỂẽẼẻẺẹẸệỆgGhHiIíÍìÌĩĨỉỈịỊkKKlLmMnNoOóÓòÒôÔốỐồỒỗỖổỔõÕỏỎơƠớỚờỜỡỠởỞợỢọỌộỘpPqQrRsSſtTuUúÚùÙũŨủỦưƯứỨừỪữỮửỬựỰụỤvVxXyYýÝỳỲỹỸỷỶỵỴ\n  - Example [Hindi (India)]:  ़ँंःॐअआइईउऊऋऌऍएऐऑओऔकखगघङचछजझञटठडढणतथदधनपफबभमयरलळवशषसहऽािीुूृॅेैॉोौ्\n- **Case-mapped Exemplars** [case_mapping]\n  - Defines the relationship between uppercase, lowercase and title case exemplars in the language for ICU case mapping. [ICU documentation](https://unicode-org.github.io/icu/userguide/transforms/casemappings.html)\n  - Example [Engish (United States)]: aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ\n  - Example [Vietnamese (Vietnam)]: aAáÁàÀăĂắẮằẰẵẴẳẲâÂấẤầẦẫẪẩẨãÃảẢạẠặẶậẬbBcCdDđĐeEéÉèÈêÊếẾềỀễỄểỂẽẼẻẺẹẸệỆgGhHiIíÍìÌĩĨỉỈịỊkKlLmMnNoOóÓòÒôÔốỐồỒỗỖổỔõÕỏỎơƠớỚờỜỡỠởỞợỢọỌộỘpPqQrRsStTuUúÚùÙũŨủỦưƯứỨừỪữỮửỬựỰụỤvVxXyYýÝỳỲỹỸỷỶỵỴ\n  - Example [Hindi (India)]:  ़ँंःॐअआइईउऊऋऌऍएऐऑओऔकखगघङचछजझञटठडढणतथदधनपफबभमयरलळवशषसहऽािीुूृॅेैॉोौ्\n- **Punctuation Exemplars** [punctuation]\n  - Punctuation customarily used with the language. [CLDR documentation](https://cldr.unicode.org/translation/core-data/exemplars#exemplar-characters)\n  - Example [Engish (United States)]: -‐‑–—,;:!?.…'‘’\"“”()[]§@*/\u0026#†‡′″\n  - Example [Vietnamese (Vietnam)]: -‐‑–—,;:!?.…'‘’\"“”()[]§@*/\u0026#†‡′″\n  - Example [Hindi (India)]: -‐‑–—,;:!?.…।॥'‘’\"“”()[]§@*/#†‡′″॰\n- **Numbers Exemplars** [numbers]\n  - The number digits used in the locale.\n  - Example [Engish (United States)]: 0123456789\n  - Example [Vietnamese (Vietnam)]: 0123456789\n  - Example [Hindi (India)]: 0123456789\n  - Example [Arabic (Egypt)]: ٠١٢٣٤٥٦٧٨٩\n- **Currency Exemplars** [currency]\n  - The currency symbol used for formatting currency numbers in the locale.\n  - Example [Engish (United States)]: $\n  - Example [Vietnamese (Vietnam)]: ₫\n  - Example [Hindi (India)]: ₹\n\nAdditional data including locale tag display names and ICU library definition version are available.\n\n### Endpoints\n\n![jsDelivr Major Version Release Status](https://img.shields.io/website?url=https://cdn.jsdelivr.net/gh/googlefonts/exemplar@1/api/data.json\u0026style=for-the-badge\u0026logo=jsdelivr\u0026label=v1%20Major%20API)\n![jsDelivr Current Release Status](https://img.shields.io/website?url=https://cdn.jsdelivr.net/gh/googlefonts/exemplar@1.1.0/api/data.json\u0026style=for-the-badge\u0026logo=jsdelivr\u0026label=v1.1.0%20API)\n\n#### Latest Release\n\n```\nhttps://cdn.jsdelivr.net/gh/googlefonts/exemplar@1/api/data.json\n```\n\n#### Endpoint Versioning\n\nThe Exemplar API follows [semantic versioning](https://semver.org/) principles. Backwards compatibility is assured within major version releases. For example, all `v1` endpoints will remain backwards compatible with any changes or additions made across the `v1.x.x` releases.\n\nThe root endpoint is:\n\n```\nhttps://cdn.jsdelivr.net\n```\n\nVersioned endpoint construction uses the following syntax:\n\n```\n/gh/googlefonts/exemplar@[VERSION]/api/data.json\n```\n\nwhere `[VERSION]` represents a repository semantic version release number git tag, or git commit hash.\n\n#### Major Version Tracking Release\n\nAutomatically update to new point releases across a major release cycle by using the major release number only:\n\n```\n/gh/googlefonts/exemplar@1/api/data.json\n```\n\n#### Pinned Version Release\n\nDefine a pinned point release with a full release version number in `MAJOR.MINOR.PATCH` syntax:\n\n```\n/gh/googlefonts/exemplar@1.1.0/api/data.json\n```\n\n### Data Structure\n\nThe JSON data follow a [repository-defined schema](schema.json). Below is an overview of the structure:\n\n#### Exemplar JSON\n\n```json\n{\n  \"icu_version\": \"version_string\",\n  \"locales\": {\n    \"locale_id\": {\n      \"main\": {\n        \"single_chars\": [\"char1\", \"char2\"],\n        \"sequences\": [\"seq1\", \"seq2\"]\n      },\n      \"auxiliary\": {\n        \"single_chars\": [\"char1\", \"char2\"],\n        \"sequences\": [\"seq1\", \"seq2\"]\n      },\n      \"punctuation\": [\"punct1\", \"punct2\"],\n      \"case_insensitive\": {\n        \"single_chars\": [\"char1\", \"char2\"],\n        \"sequences\": [\"seq1\", \"seq2\"]\n      },\n      \"case_mapping\": {\n        \"single_chars\": [\"char1\", \"char2\"],\n        \"sequences\": [\"seq1\", \"seq2\"]\n      },\n      \"numbers\": {\n        \"decimal\": \"decimal_char\",\n        \"group\": \"group_char\",\n        \"percent\": \"percent_char\",\n        \"zero_digit\": \"zero_digit_char\",\n        \"digit\": \"digit_char\",\n        \"pattern_digit\": \"pattern_digit_char\",\n        \"plus_sign\": \"plus_sign_char\",\n        \"minus_sign\": \"minus_sign_char\",\n        \"exponential\": \"exponential_char\",\n        \"per_mille\": \"per_mille_char\",\n        \"infinity\": \"infinity_char\",\n        \"nan\": \"nan_char\",\n        \"digits\": [\"digit1\", \"digit2\"]\n      },\n      \"currency\": \"currency_symbol\"\n    }\n  },\n  \"display_names\": {\n    \"locale_id\": \"Locale Display Name\"\n  }\n}\n```\n\n**Note:** The following fields can have null values when data do not exist or are not available:\n- `punctuation`\n- `case_insensitive.single_chars`\n- `case_insensitive.sequences`\n- `case_mapping.single_chars`\n- `case_mapping.sequences`\n- `currency`\n\n## Example Usage\n\nThere are demo scripts in the [`examples` directory](examples/) that demonstrate how to use the Exemplar project JSON data. These examples include:\n\n- [**currency.py**](examples/currency.py): Demonstrates how to extract and print localized currency symbols and their Unicode codepoints from the JSON data.\n- [**locsets.py**](examples/locsets.py): Demonstrates how to extract and print locale-specific exemplar character sets from the JSON data. This script takes a locale ID as a command-line argument and reports the main, auxiliary, case-insensitive, case-mapping, numbers, punctuation, and currency exemplars for the specified locale.\n\n## Development\n\nThe JSON data are generated with the [`exemplars.py`](exemplars.py) script in the root of the repository.  The [schema.json](schema.json) file defines the JSON structure for validation testing at runtime.  The Python dependencies are defined in the [requirements.txt](requirements.txt) file.\n\nThe JSON data can be generated with the following command:\n\n```\n$ python exemplars.py\n```\n\nJSON files write to the `api` sub-directory.\n\n## Changelog\n\nPlease see the [CHANGELOG.md](CHANGELOG.md) file in the root of the repository.\n\n## Licenses\n\nThe source code in this repository is licensed under [the Apache License, Version 2.0](LICENSE.md).\n\nThe CLDR data are redistributed under [the Unicode License v3](https://www.unicode.org/license.txt).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgooglefonts%2Fexemplar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgooglefonts%2Fexemplar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgooglefonts%2Fexemplar/lists"}