{"id":19777501,"url":"https://github.com/ilib-js/ucd","last_synced_at":"2025-06-25T09:38:45.798Z","repository":{"id":46291782,"uuid":"312503666","full_name":"iLib-js/UCD","owner":"iLib-js","description":"The Unicode Character Database encoded as json files","archived":false,"fork":false,"pushed_at":"2024-11-15T04:35:18.000Z","size":18921,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-05-28T03:17:52.378Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/iLib-js.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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-13T07:30:21.000Z","updated_at":"2025-05-02T16:29:30.000Z","dependencies_parsed_at":"2024-11-12T05:35:51.696Z","dependency_job_id":null,"html_url":"https://github.com/iLib-js/UCD","commit_stats":{"total_commits":19,"total_committers":2,"mean_commits":9.5,"dds":"0.052631578947368474","last_synced_commit":"449549fe47aacdae50db0c0c73ed316746660abd"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/iLib-js/UCD","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iLib-js%2FUCD","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iLib-js%2FUCD/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iLib-js%2FUCD/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iLib-js%2FUCD/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iLib-js","download_url":"https://codeload.github.com/iLib-js/UCD/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iLib-js%2FUCD/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261845972,"owners_count":23218679,"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":[],"created_at":"2024-11-12T05:25:17.775Z","updated_at":"2025-06-25T09:38:45.783Z","avatar_url":"https://github.com/iLib-js.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# UCD-full\nThe full Unicode Character Database files encoded as json.\n\nThis project publishes the exact same set of data files as the Unicode Character Database files,\nbut parsed and encoded in a more convenient format for javascript developers to consume.\n\n## To Install\n\nIn your `package.json`:\n\n```\n    devDependencies: {\n        ...\n        \"ucd-full\": \"^16.0.0\",\n        ...\n    }\n```\n\nThe major and minor version of this package is the same as the version of UCD that it supports. The\n3rd level version number may change, however, as bugs or inaccuracies are discovered and fixed in\nthis package. (ie. version 13.0.2 still encodes UCD 13.0.0, but has had 2 bug fixes.)\n\nThe UCD files are very large, so it is not recommended to use this data directly. Also, they are\nnot whitespace compressed to make it easier for development. Instead, put ucd-full in your\n`devDependencies` and write some code to extract at build time the subset of data that your\napplication needs.\n\n## To Use\n\nTo use the files, require them directly:\n\n```\nvar scripts = require(\"ucd-full/Scripts.json\");\nvar caseFolding = require(\"ucd-full/CaseFolding.json\");\nvar graphemeBreakProperty = require(\"ucd-full/auxiliary/GraphemeBreakProperty.json\");\n```\n\nThe set of files and their relative directory structure as the same as the UCD files.\n\n## Data Types\n\n### Codepoints\n\nCodepoints are given by their hexadecimal value as they are in the UCD files. They are not\nprocessed into actual Unicode values. This means any json parser should be able to parse\nthe files easily.\n\n### Ranges\n\nIn general, for any field in any file that involves a range of Unicode code points, it is\nencoded as an array:\n\n```\n[ \"042D\" ],             // a single codepoint\n[ \"0620\", \"063F\" ],     // a range of codepoints between and including U+0620 and U+063F\n```\n\nThe range is encoded as a tuple with a start and end, and are inclusive of the start and\nend characters.\n\n### Lists or Sequences\n\nFor any field that is a sequence or a list, the data is also encoded as an array of\ndiscrete codepoints. Example entry from NormalizationTest.json:\n\n```\n        {\n            \"sourceSequence\": [\n                \"1E0C\",\n                \"0307\"\n            ],\n            \"NFCSequence\": [\n                \"1E0C\",\n                \"0307\"\n            ],\n            \"NFDSequence\": [\n                \"0044\",\n                \"0323\",\n                \"0307\"\n            ],\n            \"NFKCSequence\": [\n                \"1E0C\",\n                \"0307\"\n            ],\n            \"NFKDSequence\": [\n                \"0044\",\n                \"0323\",\n                \"0307\"\n            ]\n        },\n```\n\n### One Column Files\n\nFor data files that only have one column, they are encoded in json as a simple array of\nvalues. Example snippet from the LineBreakTest.json file:\n\n```\n{\n    \"LineBreakTest\": [\n        \"× 0023 × 0023 ÷\",\n        \"× 0023 × 0020 ÷ 0023 ÷\",\n        \"× 0023 × 0308 × 0023 ÷\",\n        \"× 0023 × 0308 × 0020 ÷ 0023 ÷\",\n        \"× 0023 ÷ 2014 ÷\",\n        ...\n    }\n}\n```\n\n### Two Column Files\n\nFor data files that only have two columns, especially when it is a mapping between two\nvalues, they are encoded in json as a simple object, mapping one to the other. Example\nsnippet from BidiMirroring.json:\n\n```\n{\n    \"BidiMirroring\": {\n        \"2039\": \"203A\",\n        \"2045\": \"2046\",\n        \"2046\": \"2045\",\n        \"2208\": \"220B\",\n        \"2209\": \"220C\",\n        \"2215\": \"29F5\",\n        \"2220\": \"29A3\",\n        \"2221\": \"299B\",\n        ...\n    }\n}\n```\n\n### Multi-Column Files\n\nFor files with multiple fields, they are encoded as an array of objects with property\nnames and values. Typically every entry in these type of files have the same schema,\nthough some entries may miss one or more of the properties. Example from ArabicShaping.json:\n\n```\n{\n    \"ArabicShaping\": [\n        {\n            \"codepoint\": \"0600\",\n            \"name\": \"ARABIC NUMBER SIGN\",\n            \"type\": \"U\",\n            \"joiningGroup\": \"No_Joining_Group\"\n        },\n        {\n            \"codepoint\": \"0601\",\n            \"name\": \"ARABIC SIGN SANAH\",\n            \"type\": \"U\",\n            \"joiningGroup\": \"No_Joining_Group\"\n        },\n        ...\n    }\n}\n```\n\nFor the Unihan_* files, the data in the .txt files are given as denormalized. That is, all\nof the properties for a particular codepoint that are given on separate lines. In the\njson encoding, we put them all together in a single object, making it much easier to\nprocess. Typically the schema for entries in such files is variable. Example from\nUnihan_Variants.json:\n\n```\n{\n    \"Unihan_Readings\": [\n        {\n            \"codepoint\": \"U+3400\",\n            \"kCantonese\": \"jau1\",\n            \"kDefinition\": \"(same as U+4E18 丘) hillock or mound\",\n            \"kMandarin\": \"qiū\"\n        },\n        {\n            \"codepoint\": \"U+3401\",\n            \"kCantonese\": \"tim2\",\n            \"kDefinition\": \"to lick; to taste, a mat, bamboo bark\",\n            \"kHanyuPinyin\": \"10019.020:tiàn\",\n            \"kMandarin\": \"tiàn\"\n        },\n        {\n            \"codepoint\": \"U+3402\",\n            \"kCantonese\": \"hei2\",\n            \"kDefinition\": \"(J) non-standard form of U+559C 喜, to like, love, enjoy; a joyful thing\"\n        },\n        {\n            \"codepoint\": \"U+3404\",\n            \"kMandarin\": \"kuà\"\n        },\n        ...\n    }\n}\n```\n\n## Schema\n\nThe schema for each file is typically given in the comments at the header of the file, though some\nfiles have special html descriptions because they are a bit more complicated. (Like NamesList.txt for\nexample.)\n\nThese are all the files and their schema. For more information as to what the fields and their\nvalues mean, click on the link to read the original Unicode source txt files:\n\n| File | Fields |\n| -------- | ---------- |\n| [json/auxiliary/GraphemeBreakProperty.json](https://www.unicode.org/Public/16.0.0/ucd/auxiliary/GraphemeBreakProperty.txt) | range, property |\n| [json/auxiliary/GraphemeBreakTest.json](https://www.unicode.org/Public/16.0.0/ucd/auxiliary/GraphemeBreakTest.txt) | one column |\n| [json/auxiliary/LineBreakTest.json](https://www.unicode.org/Public/16.0.0/ucd/auxiliary/LineBreakTest.txt) | one column |\n| [json/auxiliary/SentenceBreakProperty.json](https://www.unicode.org/Public/16.0.0/ucd/auxiliary/SentenceBreakProperty.txt) | range, property |\n| [json/auxiliary/SentenceBreakTest.json](https://www.unicode.org/Public/16.0.0/ucd/auxiliary/SentenceBreakTest.txt) | one column |\n| [json/auxiliary/WordBreakProperty.json](https://www.unicode.org/Public/16.0.0/ucd/auxiliary/WordBreakProperty.txt) | range, property |\n| [json/auxiliary/WordBreakTest.json](https://www.unicode.org/Public/16.0.0/ucd/auxiliary/WordBreakTest.txt) | one column |\n| [json/BidiBrackets.json](https://www.unicode.org/Public/16.0.0/ucd/BidiBrackets.txt) | codepoint, bracket, type |\n| [json/BidiCharacterTest.json](https://www.unicode.org/Public/16.0.0/ucd/BidiCharacterTest.txt) | codePointSequence, direction, embeddingLEvel, resolvedLevelList, indexList |\n| [json/BidiMirroring.json](https://www.unicode.org/Public/16.0.0/ucd/BidiMirroring.txt) | two column codepoint map |\n| [json/BidiTest.json](https://www.unicode.org/Public/16.0.0/ucd/BidiTest.txt) | input, bitset, levels |\n| [json/Blocks.json](https://www.unicode.org/Public/16.0.0/ucd/Blocks.txt) | range, block |\n| [json/CaseFolding.json](https://www.unicode.org/Public/16.0.0/ucd/CaseFolding.txt) | codepoint, status, mapping |\n| [json/CJKRadicals.json](https://www.unicode.org/Public/16.0.0/ucd/CJKRadicals.txt) | radical, character, unified |\n| [json/CompositionExclusions.json](https://www.unicode.org/Public/16.0.0/ucd/CompositionExclusions.txt) | one column |\n| [json/DerivedAge.json](https://www.unicode.org/Public/16.0.0/ucd/DerivedAge.txt) | range, unicodeVersion |\n| [json/DerivedCoreProperties.json](https://www.unicode.org/Public/16.0.0/ucd/DerivedCoreProperties.txt) | range, property |\n| [json/DerivedNormalizationProps.json](https://www.unicode.org/Public/16.0.0/ucd/DerivedNormalizationProps.txt) | range, property, normalized |\n| [json/EastAsianWidth.json](https://www.unicode.org/Public/16.0.0/ucd/EastAsianWidth.txt) | range, width |\n| json/emoji | range, property |\n| [json/emoji/emoji-data.json](https://www.unicode.org/Public/16.0.0/ucd/emoji/emoji-data.txt) | range, property |\n| [json/emoji/emoji-variation-sequences.json](https://www.unicode.org/Public/16.0.0/ucd/emoji/emoji-variation-sequences.txt) | variationSequence, style |\n| [json/EmojiSources.json](https://www.unicode.org/Public/16.0.0/ucd/EmojiSources.txt) | codepointSequence, docomo, kddi, softbank |\n| [json/EquivalentUnifiedIdeograph.json](https://www.unicode.org/Public/16.0.0/ucd/EquivalentUnifiedIdeograph.txt) | range, unified |\n| [json/extracted/DerivedBidiClass.json](https://www.unicode.org/Public/16.0.0/ucd/extracted/DerivedBidiClass.txt) | range, class |\n| [json/extracted/DerivedBinaryProperties.json](https://www.unicode.org/Public/16.0.0/ucd/extracted/DerivedBinaryProperties.txt) | range, property |\n| [json/extracted/DerivedCombiningClass.json](https://www.unicode.org/Public/16.0.0/ucd/extracted/DerivedCombiningClass.txt) | range, combiningClass |\n| [json/extracted/DerivedDecompositionType.json](https://www.unicode.org/Public/16.0.0/ucd/extracted/DerivedDecompositionType.txt) | range, type |\n| [json/extracted/DerivedEastAsianWidth.json](https://www.unicode.org/Public/16.0.0/ucd/extracted/DerivedEastAsianWidth.txt) | range, width |\n| [json/extracted/DerivedGeneralCategory.json](https://www.unicode.org/Public/16.0.0/ucd/extracted/DerivedGeneralCategory.txt) | range, category |\n| [json/extracted/DerivedJoiningGroup.json](https://www.unicode.org/Public/16.0.0/ucd/extracted/DerivedJoiningGroup.txt) | range, group |\n| [json/extracted/DerivedJoiningType.json](https://www.unicode.org/Public/16.0.0/ucd/extracted/DerivedJoiningType.txt) | range, type  |\n| [json/extracted/DerivedLineBreak.json](https://www.unicode.org/Public/16.0.0/ucd/extracted/DerivedLineBreak.txt) | range, property |\n| [json/extracted/DerivedName.json](https://www.unicode.org/Public/16.0.0/ucd/extracted/DerivedName.txt) | range, name |\n| [json/extracted/DerivedNumericType.json](https://www.unicode.org/Public/16.0.0/ucd/extracted/DerivedNumericType.txt) | range, type |\n| [json/extracted/DerivedNumericValues.json](https://www.unicode.org/Public/16.0.0/ucd/extracted/DerivedNumericValues.txt) | range, decimalValue, whole |\n| [json/HangulSyllableType.json](https://www.unicode.org/Public/16.0.0/ucd/HangulSyllableType.txt) | range, hangulType |\n| [json/Index.json](https://www.unicode.org/Public/16.0.0/ucd/Index.txt) | two column name map |\n| [json/IndicPositionalCategory.json](https://www.unicode.org/Public/16.0.0/ucd/IndicPositionalCategory.txt) | range, positionalCategory |\n| [json/IndicSyllabicCategory.json](https://www.unicode.org/Public/16.0.0/ucd/IndicSyllabicCategory.txt) | range, syllabicCategory |\n| [json/Jamo.json](https://www.unicode.org/Public/16.0.0/ucd/Jamo.txt) | two column codepoint map |\n| [json/LineBreak.json](https://www.unicode.org/Public/16.0.0/ucd/LineBreak.txt) | range, lineBreakProperty |\n| [json/NameAliases.json](https://www.unicode.org/Public/16.0.0/ucd/NameAliases.txt) | codepoint, alias, type |\n| [json/NamedSequences.json](https://www.unicode.org/Public/16.0.0/ucd/NamedSequences.txt) | name, codepointSequence |\n| [json/NamedSequencesProv.json](https://www.unicode.org/Public/16.0.0/ucd/NamedSequencesProv.txt) | name, codepointSequence |\n| [json/NormalizationCorrections.json](https://www.unicode.org/Public/16.0.0/ucd/NormalizationCorrections.txt) | codepoint, original, corrected, unicodeVersion |\n| [json/NormalizationTest.json](https://www.unicode.org/Public/16.0.0/ucd/NormalizationTest.txt) | sourceSequence, NFCSequence, NFDSequence, NFKCSequence, NFKDSequence |\n| [json/NushuSources.json](https://www.unicode.org/Public/16.0.0/ucd/NushuSources.txt) | codepoint, kSrc_NushuDuben, kReading |\n| [json/PropertyAliases.json](https://www.unicode.org/Public/16.0.0/ucd/PropertyAliases.txt) | shortName, longName |\n| [json/PropertyValueAliases.json](https://www.unicode.org/Public/16.0.0/ucd/PropertyValueAliases.txt) | property, value1short, value1long, value2short, value2long |\n| [json/PropList.json](https://www.unicode.org/Public/16.0.0/ucd/PropList.txt) | range, property |\n| [json/ScriptExtensions.json](https://www.unicode.org/Public/16.0.0/ucd/ScriptExtensions.txt) | range, extension |\n| [json/Scripts.json](https://www.unicode.org/Public/16.0.0/ucd/Scripts.txt) | range, script |\n| [json/SpecialCasing.json](https://www.unicode.org/Public/16.0.0/ucd/SpecialCasing.txt) | codepoint, lowerSequence, titleSequence, upperSequence |\n| [json/StandardizedVariants.json](https://www.unicode.org/Public/16.0.0/ucd/StandardizedVariants.txt) | variationSequence, description |\n| [json/TangutSources.json](https://www.unicode.org/Public/16.0.0/ucd/TangutSources.txt) | codepoint, kTGT_MergedSrc, kRSTUnicode |\n| [json/UnicodeData.json](https://www.unicode.org/Public/16.0.0/ucd/UnicodeData.txt) | codepoint, name, category, canonicalCombiningClass, bidirectionalCategory, mirrored, unicode1.0Name |\n| [json/Unihan_DictionaryIndices.json](https://www.unicode.org/Public/16.0.0/ucd/Unihan_DictionaryIndices.txt) | codepoint, variety of other fields |\n| [json/Unihan_DictionaryLikeData.json](https://www.unicode.org/Public/16.0.0/ucd/Unihan_DictionaryLikeData.txt) | codepoint, variety of other fields |\n| [json/Unihan_IRGSources.json](https://www.unicode.org/Public/16.0.0/ucd/Unihan_IRGSources.txt) | codepoint, variety of other fields |\n| [json/Unihan_NumericValues.json](https://www.unicode.org/Public/16.0.0/ucd/Unihan_NumericValues.txt) | codepoint, variety of other fields |\n| [json/Unihan_OtherMappings.json](https://www.unicode.org/Public/16.0.0/ucd/Unihan_OtherMappings.txt) | codepoint, variety of other fields |\n| [json/Unihan_RadicalStrokeCounts.json](https://www.unicode.org/Public/16.0.0/ucd/Unihan_RadicalStrokeCounts.txt) | codepoint, variety of other fields |\n| [json/Unihan_Readings.json](https://www.unicode.org/Public/16.0.0/ucd/Unihan_Readings.txt) | codepoint, variety of other fields |\n| [json/Unihan_Variants.json](https://www.unicode.org/Public/16.0.0/ucd/Unihan_Variants.txt) | codepoint, variety of other fields |\n| [json/USourceData.json](https://www.unicode.org/Public/16.0.0/ucd/USourceData.txt) | sourceId, status, codepoint, radicalStrokeCount, dictionaryPosition, source, comments, totalStrokes, firstResidualStroke |\n| [json/VerticalOrientation.json](https://www.unicode.org/Public/16.0.0/ucd/VerticalOrientation.txt) | range, verticalOrientation |\n\n### NamesList\n\nThe file NamesList.json is special because of its complicated schema. Multiple lines\nin the NamesList file describe a single codepoint. There may be multiple values for the\naliases, for example, so aliases and most other properties are encoded as arrays of\nstrings that contain all of these multiple values. For compatibility mappings and\ndecompositions, each mapping or decomposition is further parsed into an array of codepoints\nwhere possible.\n\nEach entry in the names list is an object with the following properties:\n\n```\n{\n    codepoint: \"string\",\n    name: \"string\",\n    aliases: \"array of string\",\n    comments: \"array of string\",\n    crossReferences: \"array of string\",\n    compatibilityMappings: \"array of array of string\",\n    decompositions: \"array of array of string\",\n    variations: \"array of string\"\n}\n```\n\n## License\n\nThis derivative work, ucd-full, is covered under the [Apache2 license](./LICENSE).\n\nThe Unicode data in this package is covered by the [Unicode Copyright and Terms of\nUse](http://www.unicode.org/copyright.html) and by the [Unicode, Inc. License\nAgreement - Data Files and Software](https://www.unicode.org/license.html). The\nUnicode, Inc. License Agreement - Data Files and Software is as follows:\n\nUNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE\n\nSee Terms of Use for definitions of Unicode Inc.'s\nData Files and Software.\n\nNOTICE TO USER: Carefully read the following legal agreement.\nBY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S\nDATA FILES (\"DATA FILES\"), AND/OR SOFTWARE (\"SOFTWARE\"),\nYOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE\nTERMS AND CONDITIONS OF THIS AGREEMENT.\nIF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE\nTHE DATA FILES OR SOFTWARE.\n\nCOPYRIGHT AND PERMISSION NOTICE\n\nCopyright © 1991-2024 Unicode, Inc. All rights reserved.\nDistributed under the Terms of Use in https://www.unicode.org/copyright.html.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Unicode data files and any associated documentation\n(the \"Data Files\") or Unicode software and any associated documentation\n(the \"Software\") to deal in the Data Files or Software\nwithout restriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, and/or sell copies of\nthe Data Files or Software, and to permit persons to whom the Data Files\nor Software are furnished to do so, provided that either\n\n(a) this copyright and permission notice appear with all copies\nof the Data Files or Software, or\n\n(b) this copyright and permission notice appear in associated\nDocumentation.\n\nTHE DATA FILES AND SOFTWARE ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF\nANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE\nWARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT OF THIRD PARTY RIGHTS.\nIN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS\nNOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL\nDAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,\nDATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THE DATA FILES OR SOFTWARE.\n\nExcept as contained in this notice, the name of a copyright holder\nshall not be used in advertising or otherwise to promote the sale,\nuse or other dealings in these Data Files or Software without prior\nwritten authorization of the copyright holder.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filib-js%2Fucd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Filib-js%2Fucd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filib-js%2Fucd/lists"}