Repository: hakatashi/unicode-map Branch: master Commit: d474139e5b02 Files: 46 Total size: 138.0 KB Directory structure: gitextract_77ap7ofj/ ├── .gitattributes ├── .gitignore ├── .travis.yml ├── README.md ├── configs/ │ ├── bmp-1.ls │ ├── bmp-2.ls │ ├── bmp-3.ls │ └── index.ls ├── data/ │ ├── codepoints/ │ │ ├── 0000.yml │ │ ├── 0800.yml │ │ ├── 0A00.yml │ │ ├── 0C00.yml │ │ ├── 0E00.yml │ │ ├── 1000.yml │ │ ├── 1800.yml │ │ ├── 1A00.yml │ │ ├── 1C00.yml │ │ ├── 1E00.yml │ │ ├── 2000.yml │ │ ├── 2200.yml │ │ ├── 2C00.yml │ │ ├── 2E00.yml │ │ ├── 3000.yml │ │ ├── 3200.yml │ │ ├── 3400.yml │ │ ├── A000.yml │ │ ├── A500.yml │ │ ├── A800.yml │ │ ├── AA00.yml │ │ └── AC00.yml │ └── layouts/ │ ├── bmp-1.ai │ ├── bmp-2.ai │ └── bmp-3.ai ├── index.ls ├── lib/ │ ├── codepoint-builder.ls │ ├── compose-poster.ls │ ├── convert-to-pdf.ls │ ├── convert-to-png.ls │ ├── download-fonts.ls │ ├── generate-svg.ls │ ├── load-codepoints.ls │ └── util.ls ├── package.json └── test/ ├── codepoint-builder.ls ├── expect.ls └── index.ls ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitattributes ================================================ # Auto detect text files and perform LF normalization * text=auto # Custom for Visual Studio *.cs diff=csharp # Standard to msysgit *.doc diff=astextplain *.DOC diff=astextplain *.docx diff=astextplain *.DOCX diff=astextplain *.dot diff=astextplain *.DOT diff=astextplain *.pdf diff=astextplain *.PDF diff=astextplain *.rtf diff=astextplain *.RTF diff=astextplain data/layouts/*.ai filter=lfs diff=lfs merge=lfs -text data/layouts/*.svg filter=lfs diff=lfs merge=lfs -text package-lock.json binary ================================================ FILE: .gitignore ================================================ # Logs logs *.log # Runtime data pids *.pid *.seed # Directory for instrumented libs generated by jscoverage/JSCover lib-cov # Coverage directory used by tools like istanbul coverage # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) .grunt # Compiled binary addons (http://nodejs.org/api/addons.html) build/Release # Dependency directory # Commenting this out is preferred by some people, see # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git- node_modules # Users Environment Variables .lock-wscript *.svg *.png *.jpg *.txt *.pdf fonts !data/glyphs/*.svg !data/layouts/*.svg # ========================= # Operating System Files # ========================= # OSX # ========================= .DS_Store .AppleDouble .LSOverride # Thumbnails ._* # Files that might appear on external disk .Spotlight-V100 .Trashes # Directories potentially created on remote AFP share .AppleDB .AppleDesktop Network Trash Folder Temporary Items .apdisk # Windows # ========================= # Windows image file caches Thumbs.db ehthumbs.db # Folder config file Desktop.ini # Recycle Bin used on file shares $RECYCLE.BIN/ # Windows Installer files *.cab *.msi *.msm *.msp # Windows shortcuts *.lnk ================================================ FILE: .travis.yml ================================================ language: node_js # Sudo-enabled machines have much more memory sudo: required node_js: - node before_install: # Prerequisite of Nightmare.js # https://github.com/electron/electron/blob/master/docs/tutorial/testing-on-headless-ci.md - export DISPLAY=':99.0' - Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 & # Install git-lfs - mkdir -p $HOME/bin - wget https://github.com/github/git-lfs/releases/download/v1.4.3/git-lfs-linux-amd64-1.4.3.tar.gz - tar xvfz git-lfs-linux-amd64-1.4.3.tar.gz - mv git-lfs-1.4.3/git-lfs $HOME/bin/git-lfs - export PATH=$PATH:$HOME/bin/ before_script: git lfs pull script: - npm test - DEBUG=true npm run build cache: directories: - fonts branches: except: - /^v\d+\.\d+\.\d+$/ deploy: provider: releases api_key: secure: Irn5gzraLVLX2JwCIJtWcjO7mj9rj+u6EbczQYtfpif/Q7mS1L3En1IcTBwakqa1RYmIRzH/91HWMCDRIH6JMPjxdzcKsa+1BFtJys5/yzpMKT2JQIvBtydyqvCZ/vzIe1ehdvsqVEtaCGYipcEZjaS7dDNKjOAN1p1r2czxvt/5pPg2suLfse7lMEuimXDYDJUt4TbaNT1i1p6ygGZxTlBaoQ4AIWh4PqzoTAGmSJcr/pQoWycgDW60T4xujTajouWFEeW3xPOH5mLfAuwDL6egndqGMiBsFfVIJbICCjiz1Zn2p0/dcDKWT3M8qSf0QNoYk0aUzkL70Bn4roLFaqs3S0x5BRfu5o5eFbW9E6GafBjekB6uBRon68zutkCtTY+5nnrD64RtIhKbbTBY+9woO2U4AZCvv453hTd4HBpHFAlXE4J4SjprUW4cEP/6vqObD372/TwopdW/anCL7Ygj3Dd3I6HChBVsn1SPrFgCnOIiYnrNHKlyr941XSr0UUSQBsOzjGUFqjTysVAsdji6h5eQ0TD4V/wrJ1qtc+s77kDJIBP/fLNsHbfpxCzBmjkR/jR91TsJiSOev4WbkYouuQdU+nptBorpMwOuq2MFlIKbpxlix5bgnVJ1VmcRzYSiB+/WGfuxmdmcTYl48VsBxT5GolO+MV1j3grFDao= file: - bmp-1-poster.svg - bmp-1-poster.png - bmp-1-poster.pdf - bmp-2-poster.svg - bmp-2-poster.png - bmp-2-poster.pdf - bmp-3-poster.svg - bmp-3-poster.png - bmp-3-poster.pdf skip_cleanup: true on: tags: true notifications: webhooks: http://webhook.hakatashi.com/travis ================================================ FILE: README.md ================================================ # The Unicode Map Project [![Build Status][travis-image]][travis-url] [![Greenkeeper badge][greenkeeper-image]][greenkeeper-url] A bunch of Unicode characters in a poster, on a [Hilbert curve](https://en.wikipedia.org/wiki/Hilbert_curve). [travis-image]: https://travis-ci.org/hakatashi/unicode-map.svg?branch=master [travis-url]: https://travis-ci.org/hakatashi/unicode-map [greenkeeper-image]: https://badges.greenkeeper.io/hakatashi/unicode-map.svg [greenkeeper-url]: https://greenkeeper.io/ ![](https://i.imgur.com/cEVN9VR.jpg) ## 🆕 New in Ver3.0.0 * Full [Unicode 10.0.0](http://unicode.org/versions/Unicode10.0.0/) support * Pipeline table characters as of [UTC #152](http://www.unicode.org/L2/L2017/17222.htm) full support * 66 new glyphs added * Fonts were updated. Especially in Kanji, we now uses [Noto Serif CJK](https://www.google.com/get/noto/help/cjk/). ## ❓ About **The Unicode Map Project** (Japanese: Unicode巨大地図) is an experimental project to illustrate [Unicode](http://unicode.org/standard/WhatIsUnicode.html) characters (and non-characters) in a large poster, and sell them at some [dōjinshi](https://en.wikipedia.org/wiki/D%C5%8Djinshi) fair event such as [Comiket](https://en.wikipedia.org/wiki/Comiket) in Japan. The version 1.0.0 was [sold at Comiket 91](https://webcatalog-free.circle.ms/Circle/13007447), held on Dec 29, 2016. Its composition of Unicode characters is very featured by its arrangement, which introduces a [Hilbert curve](https://en.wikipedia.org/wiki/Hilbert_curve) to visually span [the blocks of Unicode](https://en.wikipedia.org/wiki/Unicode_block). The poster is developed with open source and the poster data [can be downloaded](#download) for free. And also any contribution is welcomed! ## ⏬ Download ### BMP-1 (U+0000 - U+3FFF) ver3.0.0 * [SVG (35.4 MB)](https://github.com/hakatashi/unicode-map/releases/download/201710261128/bmp-1-poster.svg) * [PNG (16.6 MB)](https://github.com/hakatashi/unicode-map/releases/download/201710261128/bmp-1-poster.png) * [PDF (13.4 MB)](https://github.com/hakatashi/unicode-map/releases/download/201710261128/bmp-1-poster.pdf) ### BMP-2 (U+4000 - U+7FFF) ver3.0.0 * [SVG (35.1 MB)](https://github.com/hakatashi/unicode-map/releases/download/201710261128/bmp-2-poster.svg) * [PNG (23.1 MB)](https://github.com/hakatashi/unicode-map/releases/download/201710261128/bmp-2-poster.png) * [PDF (14.9 MB)](https://github.com/hakatashi/unicode-map/releases/download/201710261128/bmp-2-poster.pdf) ### Development version Development version of the builds are available in the [Release page](https://github.com/hakatashi/unicode-map/releases). ## 💪 Build Install [Node.js 8+](https://nodejs.org/) and run: npm install npm run build **WARN: This command will download almost 1GB of the font data from the internet, and cache them into `fonts` subdirectory.** ## 🔰 License The overall repository is licensed under [GPLv3](https://www.gnu.org/licenses/gpl-3.0.txt) by hakatashi. The files not in the `data/glyphs` subdirectory are also licensed under [MIT License](https://opensource.org/licenses/MIT) by hakatashi. ## 🛣️ Roadmap * Full support of BMP * More permissive license ## 🙏 Materials * ArmenianEternity.svg * link: https://commons.wikimedia.org/wiki/File:ArmenianEternity.svg * author: AnonMoos * license: Public Domain * for: u058d.svg * SYRIAC-LETTER-MALAYALAM-NGA.png * link: https://en.wikipedia.org/wiki/File:SYRIAC-LETTER-MALAYALAM-NGA.png * author: Raamesh * license: CC BY-SA 4.0 * for: u0860.svg * SYRIAC-LETTER-MALAYALAM-JA.png * link: https://en.wikipedia.org/wiki/File:SYRIAC-LETTER-MALAYALAM-JA.png * author: Raamesh * license: CC BY-SA 4.0 * for: u0861.svg * SYRIAC-LETTER-MALAYALAM-NYA.png * link: https://en.wikipedia.org/wiki/File:SYRIAC-LETTER-MALAYALAM-NYA.png * author: Raamesh * license: CC BY-SA 4.0 * for: u0862.svg * SYRIAC-LETTER-MALAYALAM-TTA.png * link: https://en.wikipedia.org/wiki/File:SYRIAC-LETTER-MALAYALAM-TTA.png * author: Raamesh * license: CC BY-SA 4.0 * for: u0863.svg * SYRIAC-LETTER-MALAYALAM-NNA.png * link: https://en.wikipedia.org/wiki/File:SYRIAC-LETTER-MALAYALAM-NNA.png * author: Raamesh * license: CC BY-SA 4.0 * for: u0864.svg * SYRIAC-LETTER-MALAYALAM-NNNA.png * link: https://en.wikipedia.org/wiki/File:SYRIAC-LETTER-MALAYALAM-NNNA.png * author: Raamesh * license: CC BY-SA 4.0 * for: u0865.svg * SYRIAC-LETTER-MALAYALAM-BHA.png * link: https://en.wikipedia.org/wiki/File:SYRIAC-LETTER-MALAYALAM-BHA.png * author: Raamesh * license: CC BY-SA 4.0 * for: u0866.svg * SYRIAC-LETTER-MALAYALAM-RA.png * link: https://en.wikipedia.org/wiki/File:SYRIAC-LETTER-MALAYALAM-RA.png * author: Raamesh * license: CC BY-SA 4.0 * for: u0867.svg * SYRIAC-LETTER-MALAYALAM-LLA.png * link: https://en.wikipedia.org/wiki/File:SYRIAC-LETTER-MALAYALAM-LLA.png * author: Raamesh * license: CC BY-SA 4.0 * for: u0868.svg * SYRIAC-LETTER-MALAYALAM-LLLA.png * link: https://en.wikipedia.org/wiki/File:SYRIAC-LETTER-MALAYALAM-LLLA.png * author: Raamesh * license: CC BY-SA 4.0 * for: u0869.svg * SYRIAC-LETTER-MALAYALAM-SSA.png * link: https://en.wikipedia.org/wiki/File:SYRIAC-LETTER-MALAYALAM-SSA.png * author: Raamesh * license: CC BY-SA 4.0 * for: u086A.svg * Астрологічні цифри сингальського письма. Sinhalese astrological numerals (Sinhala Lith Illakkam).png * link: https://commons.wikimedia.org/wiki/File:%D0%90%D1%81%D1%82%D1%80%D0%BE%D0%BB%D0%BE%D0%B3%D1%96%D1%87%D0%BD%D1%96_%D1%86%D0%B8%D1%84%D1%80%D0%B8_%D1%81%D0%B8%D0%BD%D0%B3%D0%B0%D0%BB%D1%8C%D1%81%D1%8C%D0%BA%D0%BE%D0%B3%D0%BE_%D0%BF%D0%B8%D1%81%D1%8C%D0%BC%D0%B0._Sinhalese_astrological_numerals_(Sinhala_Lith_Illakkam).png * author: 00 وديع * license: CC0 1.0 * for: u0de6.svg .. u0def.svg * Open Sans * link: http://www.opensans.com/ * author: Steve Matteson and Google Corporation * license: Apache License v2 * for: Control characters * Linux Libertine * link: http://www.linuxlibertine.org/ * author: Libertine Open Fonts Project and Philipp H. Poll * license: SIL OFL 1.1 * for: Poster Design * Cinzel * link: http://ndiscovered.com/cinzel/ * author: Natanael Gama * license: SIL OFL 1.1 * for: Poster Design ================================================ FILE: configs/bmp-1.ls ================================================ module.exports = name: 'bmp-1' layout: 'bmp-1' chart: x: 28.35 y: 728.5 codepoint: 0x0000 ================================================ FILE: configs/bmp-2.ls ================================================ module.exports = name: 'bmp-2' layout: 'bmp-2' chart: x: 28.35 y: 728.5 codepoint: 0x4000 ================================================ FILE: configs/bmp-3.ls ================================================ module.exports = name: 'bmp-3' layout: 'bmp-3' chart: x: 28.35 y: 28.35 codepoint: 0x8000 ================================================ FILE: configs/index.ls ================================================ module.exports = * require './bmp-1' * require './bmp-2' * require './bmp-3' ================================================ FILE: data/codepoints/0000.yml ================================================ # Basic Latin 0000..001F: control: - NUL - SOH - STX - ETX - EOT - ENQ - ACK - BEL - BS - TAB - LF - VT - FF - CR - SO - SI - DLE - DC1 - DC2 - DC3 - DC4 - NAK - SYN - ETB - CAN - EM - SUB - ESC - FS - GS - RS - US '0020': control: SP 0021..007E: font: doulos transform: scale(0.8) 007F: control: DEL # Latin-1 Supplement 0080..00A0: control: - PAD # Only appears in early drafts of ISO 10646. Unicode charts shows XXX for this character. - HOP # Only appears in early drafts of ISO 10646. Unicode charts shows XXX for this character. - BPH - NBH - IND - NEL - SSA - ESA - HTS - HTJ - VTS - PLD - PLU - RI - SS2 - SS3 - DCS - PU1 - PU2 - STS - CCH - MW - SPA - EPA - SOS - SGC # Only appears in early drafts of ISO 10646. Unicode charts shows XXX for this character. - SCI - CSI - ST - OSC - PM - APC - NB\nSP # C1 Controls and Latin-1 Supplement 00A1..00FF: font: doulos transform: scale(0.8) 00AD: control: SHY\n- # Latin Extended-A 0100..017F: font: doulos transform: scale(0.8) 0149: svg: true transform: scale(0.8) # Latin Extended-B 0180..024F: font: doulos transform: scale(0.8) 022A..0231: font: doulos transform: translate(0, 0.05) scale(0.8) # IPA Extensions 0250..02AF: font: doulos transform: scale(0.8) # Spacing Modifier Letters 02B0..02FF: font: doulos transform: scale(0.8) # Combining Diacritical Marks 0300..036F: font: doulos combining: true transform: translate(0, -0.06) scale(0.7) translate(0.25, 0) 0321..0322: font: symbola combining: true transform: translate(0, -0.06) scale(0.7) translate(0.25, 0) 0340..0345: font: symbola combining: true transform: translate(0, -0.06) scale(0.7) translate(0.25, 0) 034F: control: CGJ 035C: font: doulos combining: true transform: translate(0, -0.16) scale(0.7) translate(0.25, 0) 035D..035E: font: doulos combining: true transform: translate(0, 0.04) scale(0.7) translate(0.25, 0) 035F: font: doulos combining: true transform: translate(0, -0.16) scale(0.7) translate(0.25, 0) 0360..0361: font: doulos combining: true transform: translate(0, 0.04) scale(0.7) translate(0.25, 0) '0362': font: doulos combining: true transform: translate(0, -0.2) scale(0.7) translate(0.25, 0) # Greek and Coptic 0370..03FF: font: symbola transform: scale(0.8) 0378..0379: notdef 0380..0383: notdef 038B: notdef 038D: notdef 03A2: notdef # Cyrillic 0400..04FF: font: symbola transform: scale(0.8) 0483..0487: font: symbola transform: scale(0.8) translate(0.25, 0) combining: true 0488..0489: font: symbola transform: translate(0, -0.08) scale(0.8) translate(0.5, 0) combining: true # Cyrillic Supplement 0500..052F: font: symbola transform: scale(0.8) 052A: font: symbola transform: scale(0.75) # Armenian 0530..058F: font: freeSerif transform: scale(0.8) '0530': notdef 0557..0558: notdef '0560': notdef 0588: notdef 058B: # Early mapping early: true font: free-serif codepoint: 0x0561 transform: translate(0, 0.15) scale(0.9) rotate(180) 058C: # Early mapping early: true svg: true transform: scale(0.9) 058D..058E: svg: true # Hebrew 0590..05FF: font: freeSerif transform: scale(0.8) 0591..05C7: font: notoHebrew transform: scale(0.7) combining: true 05C6: font: freeSerif transform: scale(0.8) 05BE: font: freeSerif transform: scale(0.8) 05C0: font: freeSerif transform: scale(0.8) 05C3: font: freeSerif transform: scale(0.8) 0590: notdef 05C8..05CF: notdef 05EB..05EE: notdef 05EF: early: true svg: true transform: scale(0.8) 05F5..05FF: notdef # Arabic 0600..06FF: font: freeSerif transform: scale(0.8) 0600..0603: font: freeSerif transform: scale(0.8) box: true '0604': font: notoArabic transform: translate(0, 0.1) scale(0.4) box: true '0605': svg: true transform: scale(0.9) box: true 0610..061A: font: freeSerif transform: scale(0.7) translate(-0.15, 0) combining: true 061C: control: ALM 061D: notdef 064B..065F: font: freeSerif transform: scale(0.7) translate(-0.15, 0) combining: true 0670: font: freeSerif transform: scale(0.7) translate(-0.15, 0) combining: true 06D6..06ED: font: freeSerif transform: scale(0.7) translate(-0.15, 0) combining: true 06DD: font: freeSerif transform: scale(0.7) box: true 06DE: font: freeSerif transform: scale(0.8) 06E5..06E6: font: freeSerif transform: scale(0.8) 06E9: font: freeSerif transform: scale(0.8) # Syriac 0700..074F: font: notoSyriac transform: scale(0.8) 070E: notdef 070F: control: SAM # Should be modified 0730..074A: font: notoSyriac combining: true transform: scale(0.9) translate(0, -0.05) 074B..074C: notdef # Arabic Supplement 0750..077F: font: freeSerif transform: scale(0.8) translate(0, -0.05) # Thaana 0780..07BF: font: freeSerif transform: scale(0.9) 07A6..07B0: font: freeSerif combining: true transform: scale(0.8) translate(-0.35, -0.1) 07B2..07BF: notdef # NKo 07C0..07FF: font: notoNko transform: scale(0.8) 07EB..07F1: font: notoNko combining: true transform: scale(0.7) translate(-0.25, 0.1) 07F2: font: notoNko combining: true transform: scale(0.7) translate(-0.25, -0.08) 07F3: font: notoNko combining: true transform: scale(0.7) translate(-0.25, 0.1) 07FB..07FC: notdef 07FD: # early mapping early: true svg: true combining: true transform: scale(0.7) translate(0, 0.1) 07FE..07FF: # early mapping early: true svg: true transform: scale(0.8) ================================================ FILE: data/codepoints/0800.yml ================================================ # Samaritan 0800..083F: font: notoSamaritan transform: scale(0.8) 0816..0819: font: notoSamaritan combining: true transform: scale(0.7) translate(-0.1, 0.15) 081B..0823: font: notoSamaritan combining: true transform: scale(0.7) translate(-0.1, 0.15) 0825..0827: font: notoSamaritan combining: true transform: scale(0.7) translate(-0.1, 0.15) 0829..082D: font: notoSamaritan combining: true transform: scale(0.7) translate(-0.1, 0.15) 082E..082F: notdef 083F: notdef # Mandaic 0840..085F: font: notoMandaic transform: scale(0.8) 0859..085B: font: notoMandaic combining: true transform: scale(0.7) translate(0, -0.1) 085C..085D: notdef 085F: notdef # Syriac Extensions 0860..087F: svg: true transform: scale(0.8) 0863: svg: true 0866: svg: true transform: scale(0.9) 0867: svg: true 086B..087F: notdef # empty 0870..08FF: notdef # Arabic Extended-A 08A0..08FF: font: scheherazade transform: translate(0, -0.2) 08B5: notdef 08B8: svg: true 08BE..08D2: notdef # Arabic text used: # 08D4: الرب # 08D8: نِ # 08DA: الثالثة # 08DB: السجدة # 08DC: النصف # 08DD: سكتة # 08DE: قف # 08DF: وقفة 08D3: # Early mapping early: true font: scheherazade codepoint: 0x06E5 combining: true transform: translate(0, 0.05) 08D4: svg: true combining: true 08D5: font: scheherazade-Bold codepoint: 0x0635 combining: true transform: scale(0.45) translate(0, -0.9) 08D6: font: scheherazade-Bold codepoint: 0x0639 combining: true transform: scale(0.45) translate(0, -1.0) 08D7: font: scheherazade-Bold codepoint: 0x0642 combining: true transform: scale(0.45) translate(0, -0.9) 08D8..08DF: svg: true combining: true 08E0: font: scheherazade-Bold codepoint: 0x0602 combining: true transform: scale(0.6) translate(0, -0.7) 08E1: font: scheherazade-Bold codepoint: 0x0603 combining: true transform: scale(0.6) translate(0, -0.7) 08E2: svg: true box: true transform: scale(0.8) 08E3: font: scheherazade combining: true transform: translate(0, -0.4) 08E4..08E5: font: scheherazade combining: true transform: translate(-0.05, -0.05) 08E6: font: scheherazade combining: true transform: translate(-0.1, -0.4) 08E7..08E8: font: scheherazade combining: true transform: translate(-0.05, 0) 08E9: font: scheherazade combining: true transform: translate(-0.1, -0.4) 08EA..08EC: font: scheherazade combining: true transform: translate(-0.05, -0.05) 08ED..08EF: font: scheherazade combining: true transform: translate(-0.05, -0.4) 08F0..08F1: font: scheherazade combining: true transform: translate(-0.05, -0.05) 08F2: font: scheherazade combining: true transform: translate(-0.05, -0.4) 08F3..08F5: font: scheherazade combining: true transform: translate(-0.05, -0.05) 08F6: font: scheherazade combining: true transform: translate(-0.05, -0.4) 08F7..08F8: font: scheherazade combining: true transform: translate(-0.05, -0.05) 08F9..08FA: font: scheherazade combining: true transform: translate(-0.05, -0.4) 08FB..08FF: font: scheherazade combining: true transform: translate(-0.05, -0.05) # Devanagari 0900..097F: font: annapurna transform: scale(0.8) 0900..0901: font: annapurna combining: true transform: scale(0.8) translate(0.2, 0.1) 0902: font: annapurna combining: true transform: scale(0.8) translate(0.1, 0.1) 0903: font: annapurna combining: true transform: scale(0.8) translate(0.35, 0) 093A: font: annapurna combining: true transform: scale(0.8) translate(0.2, 0.1) 093B: font: annapurna combining: true transform: scale(0.8) translate(0.3, 0.1) 093C: font: annapurna combining: true transform: scale(0.8) translate(0.2, -0.1) 093E: font: annapurna combining: true transform: scale(0.8) translate(0.3, 0.1) 093F: font: annapurna combining: true transform: scale(0.8) translate(-0.3, 0.1) 0940: font: annapurna combining: true transform: scale(0.8) translate(0.3, 0.1) 0941..0944: font: annapurna combining: true transform: scale(0.8) translate(0.2, -0.1) 0945..0948: font: annapurna combining: true transform: scale(0.8) translate(0.2, 0.1) 0949..094C: font: annapurna combining: true transform: scale(0.8) translate(0.3, 0.1) 094D: font: annapurna combining: true transform: scale(0.8) translate(0.2, -0.1) 094E: font: annapurna combining: true transform: scale(0.8) translate(-0.3, 0.1) 094F: font: annapurna combining: true transform: scale(0.8) translate(0.3, 0.1) 0951: font: annapurna combining: true transform: scale(0.8) translate(0.15, 0.1) 0952: font: annapurna combining: true transform: scale(0.8) translate(0.25, -0.1) 0953..0955: font: annapurna combining: true transform: scale(0.8) translate(0.2, 0.1) 0956..0957: font: annapurna combining: true transform: scale(0.8) translate(0.2, -0.1) 0962..0963: font: annapurna combining: true transform: scale(0.8) translate(0.2, -0.1) # Bengali 0980..09FF: font: notoBengali transform: scale(0.8) 0981: font: notoBengali combining: true transform: scale(0.8) translate(0.1, 0.1) 0982..0983: font: notoBengali combining: true transform: scale(0.7) translate(0.4, 0) 0984: notdef 098D..098E: notdef 0991..0992: notdef 09A9: notdef 09B1: notdef 09B3..09B5: notdef 09BA..09BB: notdef 09BC: font: notoBengali combining: true transform: scale(0.8) translate(0.4, -0.1) 09BE: font: notoBengali combining: true transform: scale(0.8) translate(0.3, 0) 09BF: font: notoBengali combining: true transform: scale(0.8) translate(-0.3, 0) 09C0: font: notoBengali combining: true transform: scale(0.8) translate(0.4, 0) 09C1..09C4: font: notoBengali combining: true transform: scale(0.8) translate(0.1, -0.1) 09C5..09C6: notdef 09C7..09C8: font: notoBengali combining: true transform: scale(0.8) translate(-0.3, 0) 09C9..09CA: notdef 09CB..09CC: font: notoBengali combining: true transform: scale(0.8) 09CD: font: notoBengali combining: true transform: scale(0.8) translate(0.1, -0.1) 09CF..09D6: notdef 09D7: font: notoBengali combining: true transform: scale(0.8) translate(0.3, 0) 09D8..09DB: notdef 09DE: notdef 09E2..09E3: font: notoBengali combining: true transform: scale(0.8) translate(0.1, -0.1) 09E4..09E5: notdef 09FC..09FD: svg: true transform: scale(0.8) 09FE: early: true combining: true font: noto-bengali codepoint: 0x09BD transform: translate(0, -0.3) scale(0.5) 09FF: notdef ================================================ FILE: data/codepoints/0A00.yml ================================================ # Gurmukhi 0A00..0A7F: font: free-serif transform: scale(0.8) 0A00: notdef 0A01: font: free-serif combining: true transform: scale(0.8) translate(0, 0.1) 0A02: font: free-serif combining: true transform: scale(0.8) translate(0.05, 0.1) 0A03: font: free-serif combining: true transform: scale(0.8) translate(0.35, -0.1) 0A04: notdef 0A0B..0A0E: notdef 0A11..0A12: notdef 0A29: notdef 0A31: notdef 0A34: notdef 0A37: notdef 0A3A..0A3B: notdef 0A3C: font: free-serif combining: true transform: scale(0.8) translate(0.3, 0) 0A3D: notdef 0A3E: font: free-serif combining: true transform: scale(0.8) translate(0.4, 0) 0A3F: font: free-serif combining: true transform: scale(0.8) translate(-0.3, 0) 0A40: font: free-serif combining: true transform: scale(0.8) translate(0.4, 0) 0A41..0A42: font: free-serif combining: true transform: scale(0.8) translate(0.35, -0.1) 0A43..0A46: notdef 0A47..0A48: font: free-serif combining: true transform: scale(0.8) translate(0.1, 0.05) 0A49..0A4A: notdef 0A4B..0A4C: font: free-serif combining: true transform: scale(0.8) translate(0.1, 0.05) 0A4D: font: free-serif combining: true transform: scale(0.8) translate(0, -0.1) 0A4E..0A50: notdef 0A51: font: free-serif combining: true transform: scale(0.8) translate(0, -0.1) 0A52..0A58: notdef 0A5D: notdef 0A5F..0A65: notdef 0A70..0A71: font: free-serif combining: true transform: scale(0.8) translate(0.15, 0.05) 0A74: font: free-serif transform: scale(0.8) translate(-0.15, 0) 0A75: font: free-serif combining: true transform: scale(0.8) translate(0.15, -0.1) 0A76: # early mapping early: true svg: true transform: scale(0.8) 0A77..0A7F: notdef # Gujarati 0A80..0AFF: font: noto-gujarati transform: scale(0.8) 0A80: notdef 0A81..0A82: font: noto-gujarati combining: true transform: scale(0.8) translate(0.1, 0.1) 0A83: font: noto-gujarati combining: true transform: scale(0.8) translate(0.3, 0) 0A84: notdef 0A8E: notdef 0A92: notdef 0AA9: notdef 0AB1: notdef 0AB4: notdef 0ABA..0ABB: notdef 0ABC: font: noto-gujarati combining: true transform: scale(0.8) translate(0.25, -0.1) 0ABE: font: noto-gujarati combining: true transform: scale(0.8) translate(0.3, 0) 0ABF: font: noto-gujarati combining: true transform: scale(0.8) translate(-0.3, 0) 0AC0: font: noto-gujarati combining: true transform: scale(0.8) translate(0.3, 0) 0AC1: font: noto-gujarati combining: true transform: scale(0.8) translate(0.1, -0.1) 0AC2..0AC4: font: noto-gujarati combining: true transform: scale(0.8) translate(0, -0.1) 0AC5: font: noto-gujarati combining: true transform: scale(0.8) translate(0.1, 0.1) 0AC6: notdef 0AC7..0AC8: font: noto-gujarati combining: true transform: scale(0.8) translate(0.1, 0.1) 0AC9: font: noto-gujarati combining: true transform: scale(0.8) translate(0.3, 0) 0ACA: notdef 0ACB..0ACC: font: noto-gujarati combining: true transform: scale(0.8) translate(0.3, 0) 0ACD: font: noto-gujarati combining: true transform: scale(0.8) translate(0, -0.1) 0ACE..0ACF: notdef 0AD1..0ADF: notdef 0AE2..0AE3: font: noto-gujarati combining: true transform: scale(0.8) translate(0.2, -0.1) 0AE4..0AE5: notdef 0AF2..0AF8: notdef 0AF9: svg: true 0AFA..0AFF: svg: true combining: true # Oriya 0B00..0B7F: font: free-serif transform: scale(0.8) 0B00: notdef 0B01: font: free-serif combining: true transform: scale(0.8) translate(0.15, 0.05) 0B02: font: free-serif combining: true transform: scale(0.8) translate(0.3, 0) 0B03: font: free-serif combining: true transform: scale(0.8) translate(0.35, 0) 0B04: notdef 0B0D..0B0E: notdef 0B11..0B12: notdef 0B29: notdef 0B31: notdef 0B34: notdef 0B3A..0B3B: notdef 0B3C: font: free-serif combining: true transform: scale(0.8) translate(0.2, -0.15) 0B3E: font: free-serif combining: true transform: scale(0.8) translate(0.35, 0) 0B3F: font: free-serif combining: true transform: scale(0.8) translate(0.35, 0.1) 0B40: font: free-serif combining: true transform: scale(0.8) translate(0.35, 0) 0B41..0B44: font: free-serif combining: true transform: scale(0.8) translate(0.15, -0.15) 0B45..0B46: notdef 0B47: font: free-serif combining: true transform: scale(0.65) translate(-0.5, 0) 0B48: font: free-serif combining: true transform: scale(0.65) translate(-0.2, 0) 0B49..0B4A: notdef 0B4B..0B4C: font: free-serif combining: true transform: scale(0.65) translate(-0.1, 0) 0B4D: font: free-serif combining: true transform: scale(0.8) translate(0, -0.1) 0B4E..0B55: notdef 0B56..0B57: font: free-serif combining: true transform: scale(0.8) translate(0.35, 0) 0B58..0B5B: notdef 0B5E: notdef 0B62..0B63: font: free-serif combining: true transform: scale(0.8) translate(0.2, -0.1) 0B64..0B65: notdef 0B71: font: free-serif transform: scale(0.8) translate(0, -0.1) 0B78..0B7F: notdef # Tamil 0B80..0BFF: font: noto-tamil transform: scale(0.6) 0B80..0B81: notdef 0B82: font: noto-tamil combining: true transform: scale(0.6) 0B84: notdef 0B8B..0B8D: notdef 0B91: notdef 0B94: font: noto-tamil transform: scale(0.45, 0.6) 0B96..0B98: notdef 0B9B: notdef 0B9D: notdef 0BA0..0BA2: notdef 0BA5..0BA7: notdef 0BAB..0BAD: notdef 0BBA..0BBB: notdef 0BBC: # early mapping early: true svg: true combining: true 0BBD: notdef 0BBE: font: noto-tamil combining: true transform: scale(0.5) translate(0.6, 0) 0BBF: font: noto-tamil combining: true transform: scale(0.6) translate(0.4, 0) 0BC0: font: noto-tamil combining: true transform: scale(0.6) translate(0.4, 0) # TODO: Should this (and next) mark have spacing form for chart? # Ref: Unicode 9.0.0 p.486 0BC1: font: noto-tamil combining: true transform: scale(0.6) translate(0.6, 0) 0BC2: font: noto-tamil combining: true transform: scale(0.4, 0.6) translate(0.8, 0) 0BC3..0BC5: notdef 0BC6: font: noto-tamil combining: true transform: scale(0.4, 0.6) translate(-0.75, 0) 0BC7: font: noto-tamil combining: true transform: scale(0.5, 0.6) translate(-0.65, 0) 0BC8: font: noto-tamil combining: true transform: scale(0.3, 0.6) translate(-1.1, -0.1) 0BC9: notdef 0BCA..0BCC: svg: true combining: true 0BCD: font: noto-tamil combining: true transform: scale(0.6) 0BCE..0BCF: notdef 0BD1..0BD6: notdef 0BD7: font: noto-tamil combining: true transform: scale(0.25, 0.6) translate(1.3, 0) 0BD8..0BE5: notdef 0BF5: font: noto-tamil transform: scale(0.45, 0.6) 0BF8: font: noto-tamil transform: scale(0.5, 0.6) 0BFB..0BFF: notdef ================================================ FILE: data/codepoints/0C00.yml ================================================ # Telugu 0C00..0C7F: font: noto-telugu transform: scale(0.8) 0C00: svg: true combining: true 0C01: font: noto-telugu combining: true transform: scale(0.7) translate(0.4, -0.15) 0C02: font: noto-telugu combining: true transform: scale(0.7) translate(0.5, -0.15) 0C03: font: noto-telugu combining: true transform: scale(0.8) translate(0.3, -0.1) 0C04: early: true svg: true combining: true 0C0D: notdef 0C11: notdef 0C29: notdef 0C34: svg: true transform: scale(0.8) 0C3A..0C3C: notdef 0C3E..0C40: font: noto-telugu combining: true transform: scale(0.7) translate(0.3, -0.15) 0C41: font: noto-telugu combining: true transform: scale(0.8) translate(0.4, -0.1) 0C42: font: noto-telugu combining: true transform: scale(0.5, 0.8) translate(0.7, -0.1) 0C43..0C44: font: noto-telugu combining: true transform: scale(0.7, 0.8) translate(0.4, -0.1) 0C45: notdef 0C46..0C48: font: noto-telugu combining: true transform: scale(0.8) translate(0.2, -0.1) 0C49: notdef 0C4A..0C4D: font: noto-telugu combining: true transform: scale(0.8) translate(0.4, -0.1) 0C4E..0C54: notdef 0C55: font: noto-telugu combining: true transform: scale(0.8) translate(0.1, -0.1) 0C56: font: noto-telugu combining: true transform: scale(0.8) translate(0.3, -0.1) 0C57: notdef 0C5A: svg: true transform: scale(0.8) 0C5B..0C5F: notdef 0C60: font: noto-telugu transform: scale(0.6, 0.8) 0C62..0C63: font: noto-telugu combining: true transform: scale(0.8) translate(0.3, -0.2) 0C64..0C65: notdef 0C70..0C76: notdef 0C77: early: true svg: true # Kannada 0C80..0CFF: font: noto-kannada transform: scale(0.75) 0C80: svg: true transform: scale(0.75) 0C81: font: noto-kannada combining: true transform: scale(0.75) translate(0.1, 0.1) 0C82: font: noto-kannada combining: true transform: scale(0.65, 0.75) translate(0.5, -0.05) 0C83: font: noto-kannada combining: true transform: scale(0.75) translate(0.4, -0.05) 0C84: early: true svg: true transform: scale(0.9) 0C8D: notdef 0C91: notdef 0CA9: notdef 0CB4: notdef 0CBA..0CBB: notdef 0CBC: font: noto-kannada combining: true transform: scale(0.75) translate(0, -0.1) 0CBE: font: noto-kannada combining: true transform: scale(0.75) translate(0.5, -0.1) 0CBF: font: noto-kannada combining: true transform: scale(0.75) translate(0.2, 0) 0CC0..0CC1: font: noto-kannada combining: true transform: scale(0.75) translate(0.4, 0) 0CC2: font: noto-kannada combining: true transform: scale(0.6, 0.75) translate(0.5, 0) 0CC3: font: noto-kannada combining: true transform: scale(0.75) translate(0.3, -0.2) 0CC4: font: noto-kannada combining: true transform: scale(0.6, 0.75) translate(0.5, -0.2) 0CC5: notdef 0CC6: font: noto-kannada combining: true transform: scale(0.75) translate(0.2, -0.1) 0CC7: font: noto-kannada combining: true transform: scale(0.75) translate(0.4, -0.1) 0CC8: font: noto-kannada combining: true transform: scale(0.75) translate(0.3, -0.1) 0CC9: notdef 0CCA: font: noto-kannada combining: true transform: scale(0.5, 0.75) translate(0.7, -0.1) 0CCB: font: noto-kannada combining: true transform: scale(0.3, 0.75) translate(1, -0.1) 0CCC: font: noto-kannada combining: true transform: scale(0.75) translate(0.4, -0.1) 0CCD: font: noto-kannada combining: true transform: scale(0.75) translate(0.4, -0.1) 0CCE..0CD4: notdef 0CD5: font: noto-kannada combining: true transform: scale(0.75) translate(0.4, 0) 0CD6: font: noto-kannada combining: true transform: scale(0.75) translate(0.5, -0.4) 0CD7..0CDD: notdef 0CDF: notdef 0CE0: font: noto-kannada transform: scale(0.65, 0.75) 0CE2..0CE3: font: noto-kannada combining: true transform: scale(0.75) translate(0.15, -0.2) 0CE4..0CE5: notdef 0CF0: notdef 0CF1..0CF2: font: noto-kannada transform: scale(0.75) box: true 0CF3..0CFF: notdef # Malayalam 0D00..0D7F: font: free-serif transform: scale(0.8) translate(0, -0.1) 0D00: svg: true combining: true 0D01: font: noto-malayalam combining: true transform: scale(0.8) 0D02: font: free-serif combining: true transform: scale(0.8) translate(0.35, -0.2) 0D03: font: free-serif combining: true transform: scale(0.8) translate(0.3, -0.1) 0D04: notdef 0D08: font: free-serif transform: scale(0.8) scale(0.9, 1) translate(0, -0.1) 0D0D: notdef 0D10: font: free-serif transform: scale(0.8) scale(0.85, 1) translate(-0.05, -0.1) 0D11: notdef 0D3B..0D3C: svg: true combining: true 0D3E: font: free-serif combining: true transform: scale(0.8) translate(0.4, -0.1) 0D3F..0D44: font: free-serif combining: true transform: scale(0.8) translate(0.3, -0.1) 0D45: notdef 0D46..0D47: font: free-serif combining: true transform: scale(0.8) translate(-0.45, -0.1) 0D48: font: free-serif combining: true transform: scale(0.3, 0.8) translate(-1.1, -0.1) 0D49: notdef 0D4A..0D4C: svg: true combining: true 0D4D: font: free-serif combining: true transform: scale(0.8) translate(0.2, 0) 0D4E: font: free-serif box: true transform: scale(0.8) translate(0, -0.2) 0D50..0D53: notdef 0D54: # TODO: find more neat serif font font: manjari transform: scale(0.7) scale(-1, 1) 0D55..0D56: font: manjari transform: scale(0.7) 0D57: font: free-serif combining: true transform: scale(0.5, 0.8) translate(0.6, -0.1) 0D58..0D5C: font: manjari transform: scale(0.7) 0D5D: font: manjari transform: scale(0.45, 0.7) 0D5E..0D5F: font: manjari transform: scale(0.7) 0D62..0D63: font: free-serif combining: true transform: scale(0.8) translate(0.3, -0.1) 0D64..0D65: notdef 0D76: font: manjari transform: scale(0.7) 0D77: font: manjari transform: scale(0.6, 0.7) 0D78: font: manjari transform: scale(0.5, 0.7) # Sinhala 0D80..0DFF: font: free-serif transform: scale(0.8) translate(0, -0.1) 0D80..0D81: notdef 0D82: font: free-serif combining: true transform: scale(0.8) translate(0.3, -0.1) 0D83: font: free-serif combining: true transform: scale(0.8) translate(0.3, -0.05) 0D84: notdef 0D90: font: free-serif transform: scale(0.7, 0.8) translate(0, -0.1) 0D97..0D99: notdef 0DB2: notdef 0DBC: notdef 0DBE..0DBF: notdef 0DC7..0DC9: notdef 0DCA: font: free-serif combining: true transform: scale(0.8) translate(0.3, 0) 0DCB..0DCE: notdef 0DCF..0DD1: font: free-serif combining: true transform: scale(0.8) translate(0.35, -0.05) 0DD2..0DD3: font: free-serif combining: true transform: scale(0.8) translate(0.3, -0.05) 0DD4: font: free-serif combining: true transform: scale(0.8) translate(0.3, -0.1) 0DD5: notdef 0DD6: font: free-serif combining: true transform: scale(0.8) translate(0.3, -0.1) 0DD7: notdef 0DD8: font: free-serif combining: true transform: scale(0.8) translate(0.35, -0.1) 0DD9: font: free-serif combining: true transform: scale(0.5, 0.8) translate(-0.65, -0.1) 0DDA: svg: true combining: true 0DDB: font: free-serif combining: true transform: scale(0.25, 0.8) translate(-1.25, -0.1) 0DDC..0DDE: svg: true combining: true 0DDF: font: free-serif combining: true transform: scale(0.8) translate(0.4, -0.1) 0DE0..0DE5: notdef 0DE6..0DEF: svg: true transform: scale(0.8) 0DF0..0DF1: notdef 0DF2: font: free-serif combining: true transform: scale(0.5, 0.8) translate(0.65, -0.1) 0DF3: font: free-serif combining: true transform: scale(0.8) translate(0.4, -0.1) 0DF5..0DFF: notdef ================================================ FILE: data/codepoints/0E00.yml ================================================ # Thai 0E00..0E7F: font: norasi transform: scale(0.8) translate(0, -0.05) 0E00: notdef 0E31: font: norasi combining: true transform: scale(0.8) translate(0.4, 0.1) 0E34..0E37: font: norasi combining: true transform: scale(0.8) translate(0.3, 0) 0E38..0E3A: font: norasi combining: true transform: scale(0.8) translate(0.3, -0.1) 0E3B..0E3E: notdef 0E42..0E44: font: norasi transform: scale(0.8) translate(0, 0.15) 0E47: font: norasi combining: true transform: scale(0.8) translate(0.3, 0.05) 0E48..0E4C: font: norasi combining: true transform: scale(0.8) translate(0.3, 0.4) 0E4D..0E4E: font: norasi combining: true transform: scale(0.8) translate(0.4, 0.1) 0E5B: font: norasi transform: scale(0.7, 0.8) translate(-0.05, -0.05) 0E5C..0E7F: notdef # Lao 0E80..0EFF: font: noto-lao transform: scale(0.7) 0E80: notdef 0E83: notdef 0E85: notdef 0E86: early: true font: jglao codepoint: 0x0E83 transform: scale(0.9) translate(0, -0.1) 0E89: early: true font: jglao transform: scale(0.9) translate(0, -0.1) 0E8B: notdef 0E8C: early: true font: jglao codepoint: 0x0E8B transform: scale(0.9) translate(0, -0.1) 0E8E: early: true font: jglao codepoint: 0x0E8C transform: scale(0.9) translate(0, -0.1) 0E8F: early: true font: jglao codepoint: 0x0E8E transform: scale(0.9) translate(0, -0.1) 0E90: early: true font: jglao codepoint: 0x0E8F transform: scale(0.9) translate(0, -0.1) 0E91: early: true font: jglao codepoint: 0x0E90 transform: scale(0.9) translate(0, -0.1) 0E92: early: true font: jglao codepoint: 0x0E91 transform: scale(0.9) translate(0, -0.1) 0E93: early: true font: jglao transform: scale(0.9) translate(0, -0.1) 0E98: early: true font: jglao codepoint: 0x0EE5 transform: scale(0.9) translate(0, -0.1) 0EA0: early: true font: jglao transform: scale(0.9) translate(0, -0.1) 0EA4: notdef 0EA6: notdef 0EA8: early: true font: jglao codepoint: 0x0EA4 transform: scale(0.9) translate(0, -0.1) 0EA9: early: true font: jglao codepoint: 0x0EA6 transform: scale(0.9) translate(0, -0.1) 0EAC: early: true font: jglao transform: scale(0.9) translate(0, -0.1) 0EB1: font: noto-lao combining: true transform: scale(0.7) translate(0.3, 0.1) 0EB4..0EB7: font: noto-lao combining: true transform: scale(0.7) translate(0.3, 0.1) 0EB8..0EB9: font: noto-lao combining: true transform: scale(0.7) translate(0.2, -0.1) 0EBA: early: true combining: true font: jglao transform: scale(0.9) translate(0.2, -0.2) 0EBB: font: noto-lao combining: true transform: scale(0.7) translate(0.3, 0.1) 0EBC: font: noto-lao combining: true transform: scale(0.7) translate(0.3, -0.1) 0EBE..0EBF: notdef 0EC5: notdef 0EC7: notdef 0EC8..0ECD: font: noto-lao combining: true transform: scale(0.7) translate(0.25, 0.3) 0ECE..0ECF: notdef 0EDA..0EDB: notdef 0EE0..0EFF: notdef 0F00..0FFF: font: jomolhari transform: scale(0.8) translate(0, 0.15) 0F00..0F03: font: jomolhari transform: scale(0.8) translate(0, 0.25) 0F08: font: jomolhari transform: scale(0.8) translate(0, -0.1) 0F0B: # TODO: Draw glyph control: NB box: true 0F12: font: jomolhari transform: scale(0.8) translate(0, -0.1) 0F15..0F16: font: jomolhari transform: scale(0.8) 0F18: font: jomolhari combining: true transform: scale(0.8) translate(0.3, -0.15) 0F19: font: noto-tibetan combining: true transform: scale(0.8) translate(0.3, -0.05) 0F35: font: noto-tibetan combining: true transform: scale(0.8) translate(0.25, -0.15) 0F36: font: jomolhari transform: scale(0.8) translate(0, 0.05) 0F37: font: noto-tibetan combining: true transform: scale(0.8) translate(0.15, -0.15) 0F39: font: jomolhari combining: true transform: scale(0.8) translate(0.3, 0.2) 0F3C..0F3D: font: jomolhari transform: scale(0.7) translate(0, 0.25) 0F3E: font: noto-tibetan combining: true transform: scale(0.8) translate(0.3, -0.1) 0F3F: font: noto-tibetan combining: true transform: scale(0.8) translate(-0.3, -0.1) 0F48: notdef 0F6B..0F6C: font: noto-tibetan transform: scale(0.7) translate(0, -0.1) 0F6D..0F70: notdef 0F71: font: jomolhari combining: true transform: scale(0.8) translate(0.15, -0.1) 0F72: font: jomolhari combining: true transform: scale(0.8) translate(0.2, 0.25) 0F73: svg: true combining: true 0F74..0F75: font: jomolhari combining: true transform: scale(0.8) translate(0.15, -0.1) 0F76..0F79: svg: true combining: true 0F7A..0F7E: font: jomolhari combining: true transform: scale(0.8) translate(0.2, 0.25) 0F7F: font: jomolhari combining: true transform: scale(0.8) translate(0.3, 0.15) 0F80: font: jomolhari combining: true transform: scale(0.8) translate(0.2, 0.25) 0F81: svg: true combining: true 0F82..0F83: font: jomolhari combining: true transform: scale(0.8) translate(0.2, 0.2) 0F84: font: jomolhari combining: true transform: scale(0.8) translate(0.2, 0.15) 0F86..0F87: font: noto-tibetan combining: true transform: scale(0.8) translate(0.1, 0.15) 0F8C: font: noto-tibetan transform: scale(0.8) translate(0, 0.25) 0F8D..0F8F: font: noto-tibetan combining: true transform: scale(0.7) translate(0.35, 0.15) 0F90..0FBC: font: jomolhari combining: true transform: scale(0.8, 0.45) translate(0.2, 0.35) 0F98: notdef 0F99: font: jomolhari combining: true transform: scale(0.8, 0.45) translate(0, 0.35) 0FAD: font: jomolhari combining: true transform: scale(0.8, 0.45) translate(0.2, 0.35) 0FB5: font: jomolhari combining: true transform: scale(0.8, 0.45) translate(0.4, 0.35) 0FBD: notdef 0FC3: font: jomolhari transform: scale(0.8) translate(0, 0) 0FC4: font: jomolhari transform: scale(0.8) translate(0, -0.15) 0FC5: font: jomolhari transform: scale(0.8) 0FC6: font: jomolhari combining: true transform: scale(0.7) translate(0, 0.1) 0FC8: font: jomolhari transform: scale(0.8) translate(0, -0.15) 0FC9..0FCC: font: jomolhari transform: scale(0.8) translate(0, 0.05) 0FCD: notdef 0FCE: font: noto-tibetan transform: scale(0.8) translate(0, -0.1) 0FD0: font: jomolhari transform: scale(0.75) translate(0, 0.2) 0FD1: font: jomolhari transform: scale(0.8) translate(0, -0.1) 0FD2..0FDA: font: noto-tibetan transform: scale(0.8) translate(0, 0) 0FDB..0FFF: notdef ================================================ FILE: data/codepoints/1000.yml ================================================ # Myanmar 1000..109F: font: padauk transform: scale(0.65) translate(0, -0.1) 102A: font: padauk transform: scale(0.45, 0.65) translate(0, -0.1) 102B: font: padauk combining: true transform: scale(0.65) translate(0.4, -0.1) 102C: font: padauk combining: true transform: scale(0.65) translate(0.5, -0.1) 102D..102E: font: padauk combining: true transform: scale(0.65) translate(0.2, -0.1) 102F..1030: # TODO: is this right composition? font: padauk combining: true transform: scale(0.65, 0.3) translate(0, 0.6) 1031: font: padauk combining: true transform: scale(0.65) translate(-0.5, -0.1) 1032..1035: font: padauk combining: true transform: scale(0.65) translate(0.2, -0.1) 1036..1037: font: padauk combining: true transform: scale(0.65) translate(0.1, -0.1) 1038: font: padauk combining: true transform: scale(0.65) translate(0.4, -0.1) 1039: # TODO: draw cross font: padauk transform: scale(0) combining: true box: true 103A..103B: font: padauk combining: true transform: scale(0.65) translate(0.4, -0.1) 103C: font: padauk combining: true transform: scale(0.65) translate(-0.3, -0.1) 103D: font: padauk combining: true transform: scale(0.65) translate(0.2, -0.1) 103E: font: padauk combining: true transform: scale(0.65) translate(0, -0.1) 1056..1057: font: padauk combining: true transform: scale(0.65) translate(0.5, -0.1) 1058..1059: font: padauk combining: true transform: scale(0.65) translate(0, -0.1) 105E..1060: font: padauk combining: true transform: scale(0.65) translate(0.1, -0.1) 1062..1064: font: padauk combining: true transform: scale(0.65) translate(0.4, -0.1) 1067..106D: font: padauk combining: true transform: scale(0.65) translate(0.4, -0.1) 1071: font: padauk combining: true transform: scale(0.65) translate(0, -0.1) 1072: font: padauk combining: true transform: scale(0.65) translate(0.2, -0.1) 1073: font: padauk combining: true transform: scale(0.65) translate(0, -0.1) 1074: font: padauk combining: true transform: scale(0.65) translate(0.3, -0.1) 1082: font: padauk combining: true transform: scale(0.65) translate(0, -0.1) 1083: font: padauk combining: true transform: scale(0.65) translate(0.4, -0.1) 1084: font: padauk combining: true transform: scale(0.65) translate(-0.5, -0.1) 1085..1086: font: padauk combining: true transform: scale(0.65) translate(0.2, -0.1) 1087..108B: font: padauk combining: true transform: scale(0.65) translate(0.4, -0.1) 108C: font: padauk combining: true transform: scale(0.65) translate(0.5, -0.1) 108D: font: padauk combining: true transform: scale(0.65) translate(0, 0) 108F: font: padauk combining: true transform: scale(0.65) translate(0.4, -0.1) 109A..109C: font: padauk combining: true transform: scale(0.65) translate(0.4, -0.1) 109D: font: padauk combining: true transform: scale(0.65) translate(0.2, -0.1) # Georgian 10A0..10FF: font: noto-georgian transform: scale(0.7) 10C6: notdef 10C7: # TODO: more consistent typeface font: quivira transform: scale(0.7) 10C8..10CC: notdef 10CD: font: quivira transform: scale(0.7) 10CE..10CF: notdef 10FD..10FF: font: quivira transform: scale(0.8) # Hangul Jamo 1100..11FF: font: unbatang transform: translate(0.12, -0.05) 115F: control: HC\nF 1160: control: HJ\nF 1161..11A7: font: unbatang transform: translate(0.5, -0.05) 11A8..11FF: font: unbatang transform: translate(0.42, -0.05) # Ethiopic 1200..137F: font: abyssinica transform: scale(0.8) 1249: notdef 124E..124F: notdef 1257: notdef 1259: notdef 125E..125F: notdef 1289: notdef 128E..128F: notdef 12B1: notdef 12B6..12B7: notdef 12BF: notdef 12C1: notdef 12C6..12C7: notdef 12D7: notdef 1311: notdef 1316..1317: notdef 135B..135C: notdef 135D..135F: font: abyssinica combining: true transform: scale(0.8) translate(0.25, 0.1) 137D..137F: notdef # Ethiopic Supplement 1380..139F: font: abyssinica transform: scale(0.8) 139A..139F: notdef # Cherokee # TODO: Even Unicode 9.0.0 introduced new sans-serif typeface to the chart, I think serif typeface is more preffered 13A0..13FF: font: noto-cherokee transform: scale(0.8) 13F6..13F7: notdef 13FE..13FF: notdef # Unified Canadian Aboriginal Syllabics 1400..167F: font: noto-canadian-aboriginal transform: scale(0.8) 1671..1672: font: noto-canadian-aboriginal transform: scale(0.7, 0.8) 1675..1676: font: noto-canadian-aboriginal transform: scale(0.7, 0.8) # Ogham 1680..169F: font: noto-ogham transform: scale(0.8) 1680: font: noto-ogham box: true transform: scale(0.8) 169D..169F: notdef # Runic 16A0..16FF: font: noto-runic transform: scale(0.8) 16F1..16F8: svg: true 16F2: font: noto-runic codepoint: 0x16CB transform: scale(-0.8, 0.8) 16F7: font: noto-runic codepoint: 0x16B4 transform: scale(0.8, -0.8) 16F9..16FF: notdef # Tagalog 1700..171F: font: noto-tagalog transform: scale(0.8) 170D: notdef 1712: font: noto-tagalog combining: true transform: scale(0.8) translate(0.15, 0) 1713..1714: font: noto-tagalog combining: true transform: scale(0.8) translate(0.25, 0) 1715..171F: notdef # Hanunoo 1720..173F: font: free-serif 1732..1733: font: free-serif combining: true transform: transform(0.3, 0.05) 1734: font: free-serif combining: true transform: scale(0.8) transform(0.3, 0) 1737..173F: notdef # Buhid 1740..175F: font: hancom transform: scale(0.8) 1752: font: hancom combining: true transform: scale(0.8) translate(0, 0.1) 1753: font: hancom combining: true transform: scale(0.8) translate(0, -0.1) 1754..175F: notdef # Tagbanwa 1760..177F: font: noto-tagbanwa transform: scale(0.8) 176D: notdef 1771: notdef 1772..1773: font: noto-tagbanwa combining: true transform: scale(0.8) translate(0.3, 0) 1774..177F: notdef # Khmer 1780..17FF: font: noto-khmer transform: scale(0.75) translate(0, -0.05) 17AA: font: noto-khmer transform: scale(0.75) translate(0, 0.05) 17B3: font: noto-khmer transform: scale(0.75) translate(0, 0.05) 17B4: control: KIV\nAQ 17B5: control: KIV\nAA 17B6: font: noto-khmer combining: true transform: scale(0.75) translate(0.35, -0.05) 17B7..17BA: font: noto-khmer combining: true transform: scale(0.75) translate(0.35, 0.2) 17BB..17BD: font: noto-khmer combining: true transform: scale(0.75) translate(0.2, -0.1) 17BE..17C0: svg: true combining: true 17C1..17C3: font: noto-khmer combining: true transform: scale(0.75) translate(-0.4, 0.15) 17C4..17C5: svg: true combining: true 17C6: font: noto-khmer combining: true transform: scale(0.75) translate(0.35, 0.2) 17C7..17C8: font: noto-khmer combining: true transform: scale(0.75) translate(0.35, 0) 17C9..17D1: font: noto-khmer combining: true transform: scale(0.75) translate(0.35, 0.2) 17D2: font: noto-khmer combining: true box: true transform: scale(0.75) translate(0.35, -0.2) 17D3: font: noto-khmer combining: true transform: scale(0.75) translate(0.35, 0.2) 17D8: font: noto-khmer transform: scale(0.4, 0.75) translate(0, -0.05) 17DA: font: noto-khmer transform: scale(0.55, 0.75) translate(0, -0.05) 17DD: font: noto-khmer combining: true transform: scale(0.75) translate(0.45, 0.2) 17DE..17DF: notdef 17EA..17EF: notdef 17FA..17FF: notdef ================================================ FILE: data/codepoints/1800.yml ================================================ # Mongolian 1800..18AF: font: mongolian-script transform: scale(0.7) translate(0, -0.05) 180B..180E: control: - FV\nS1 - FV\nS2 - FV\nS3 - MV\nS 180F: notdef 1810..1819: font: mongolian-script transform: rotate(90) scale(0.7) translate(0, -0.05) 181A..181F: notdef 1878: early: true svg: true 1879..187F: notdef 1885: font: mongolian-script combining: true transform: scale(0.7) translate(0, -0.5) 1886: font: mongolian-script combining: true transform: scale(0.7, 0.4) translate(0, -0.8) 189C: font: mongolian-script transform: scale(0.7) translate(0, 0) 18A9: svg: true combining: true 18AA: svg: true 18AB..18AF: notdef # Unified Canadian Aboriginal Syllabics Extended 18B0..18FF: font: noto-canadian-aboriginal transform: scale(0.8) 18DE..18DF: font: noto-canadian-aboriginal transform: scale(0.8) translate(0, 0.2) 18F6..18FF: notdef # Limbu 1900..194F: font: namdhinggo 191D..191E: svg: true 191F: notdef 1920..1921: font: namdhinggo combining: true transform: translate(0.3, 0) 1922: font: namdhinggo combining: true transform: translate(0.2, -0.15) 1923: font: namdhinggo combining: true transform: translate(0.3, -0.1) 1924: font: namdhinggo combining: true transform: scale(0.7, 1) translate(0.45, -0.1) 1925: font: namdhinggo combining: true transform: translate(0.35, -0.05) 1926: font: namdhinggo combining: true transform: scale(0.7, 1) translate(0.45, -0.05) 1927..1928: font: namdhinggo combining: true transform: translate(0.1, 0) 1929..192B: font: namdhinggo combining: true transform: translate(0.3, -0.2) 192C..192F: notdef 1930: font: namdhinggo combining: true transform: scale(0.8, 1) translate(0.4, -0.1) 1931: font: namdhinggo combining: true transform: translate(0.3, -0.2) 1932..1933: font: namdhinggo combining: true transform: translate(0.3, -0.2) 1934..1936: font: namdhinggo combining: true transform: translate(0.3, -0.1) 1937: font: namdhinggo combining: true transform: translate(0.2, -0.1) 1938: font: namdhinggo combining: true transform: translate(0.3, -0.2) 1939: font: namdhinggo combining: true transform: translate(0.2, -0.1) 193A: font: namdhinggo combining: true transform: translate(0.1, 0.1) 193B: font: namdhinggo combining: true transform: translate(0.25, -0.2) 193C..193F: notdef 1941..1943: notdef # Tai Le 1950..197F: font: free-serif transform: scale(0.8) 196E..196F: notdef 1975..197F: notdef # New Tai Lue 1980..19DF: font: dai-banna transform: scale(0.85) translate(0, -0.1) 19AC..19AF: notdef 19CA..19CF: notdef 19DB..19DF: notdef # Khmer Symbols 19E0..19FF: font: noto-khmer transform: scale(0.55) translate(0, -0.05) ================================================ FILE: data/codepoints/1A00.yml ================================================ # Buginese 1A00..1A1F: font: free-serif transform: scale(0.8) 1A17..1A18: font: free-serif combining: true transform: scale(0.8) translate(0.2, 0) 1A19: font: free-serif combining: true transform: scale(0.8) translate(-0.2, 0) 1A1A: font: free-serif combining: true transform: scale(0.6, 0.8) translate(0.6, 0) 1A1B: font: free-serif combining: true transform: scale(0.8) translate(0.4, 0) 1A1C..1A1D: notdef # Tai Tham 1A20..1AAF: font: noto-tai-tham transform: scale(0.8) 1A55: font: noto-tai-tham combining: true transform: scale(0.8) translate(-0.4, 0) 1A56..1A57: font: noto-tai-tham combining: true transform: scale(0.8) translate(0.3, -0.1) 1A58: font: noto-tai-tham combining: true transform: scale(0.8) translate(0.4, 0.2) 1A59..1A5A: font: noto-tai-tham combining: true transform: scale(0.8) translate(0.3, 0.1) 1A5B: font: noto-tai-tham combining: true transform: scale(0.8) translate(0.3, 0) 1A5C..1A5E: font: noto-tai-tham combining: true transform: scale(0.8) translate(0.25, -0.1) 1A5F: notdef 1A60: font: noto-tai-tham combining: true box: true transform: scale(0.8) translate(0.15, -0.15) 1A61: font: noto-tai-tham combining: true transform: scale(0.8) translate(0.4, -0.1) 1A62: font: noto-tai-tham combining: true transform: scale(0.8) translate(0.2, 0) 1A63..1A64: font: noto-tai-tham combining: true transform: scale(0.8) translate(0.35, 0) 1A65..1A68: font: noto-tai-tham combining: true transform: scale(0.8) translate(0.25, 0.1) 1A69..1A6A: font: noto-tai-tham combining: true transform: scale(0.8) translate(0.2, -0.1) 1A6B: font: noto-tai-tham combining: true transform: scale(0.8) translate(0.25, 0) 1A6C: font: noto-tai-tham combining: true transform: scale(0.8) translate(0.2, -0.1) 1A6D: font: noto-tai-tham combining: true transform: scale(0.8) translate(0.3, -0.1) 1A6E: font: noto-tai-tham combining: true transform: scale(0.8) translate(-0.4, -0.1) 1A6F: font: noto-tai-tham combining: true transform: scale(0.4, 0.8) translate(-0.8, -0.1) 1A70..1A72: font: noto-tai-tham combining: true transform: scale(0.8) translate(-0.4, -0.1) 1A73..1A76: font: noto-tai-tham combining: true transform: scale(0.8) translate(0.15, 0) 1A77..1A7C: font: noto-tai-tham combining: true transform: scale(0.8) translate(0.3, 0.05) 1A7D..1A7E: notdef 1A7F: font: noto-tai-tham combining: true transform: scale(0.8) translate(0.15, -0.1) 1A8A..1A8F: notdef 1A9A..1A9F: notdef 1AAE..1AAF: notdef # Combining Diacritical Marks Extended 1AB0..1AFF: font: nishiki 1AB0..1AB4: font: nishiki combining: true transform: translate(0.3, 0.1) 1AB5..1AB8: font: nishiki combining: true transform: translate(0.3, -0.1) 1AB9..1ABA: font: nishiki combining: true transform: translate(0.4, -0.05) 1ABB..1ABC: font: nishiki combining: true transform: translate(0.3, 0.1) 1ABD: font: nishiki combining: true transform: translate(0.3, -0.15) 1ABE: font: nishiki combining: true transform: translate(0.25, 0) 1ABF..1AFF: notdef # Balinese # Consider using Aksara Bali instead of Noto # http://www.alanwood.net/downloads/aksrbali.zip 1B00..1B7F: font: noto-balinese transform: scale(0.7) translate(0, -0.2) 1B00..1B03: font: noto-balinese combining: true transform: scale(0.7) translate(0.3, 0) 1B04: font: noto-balinese combining: true transform: scale(0.7) translate(0.4, -0.2) 1B34: font: noto-balinese combining: true transform: scale(0.7) translate(0.25, 0) 1B35: font: noto-balinese combining: true transform: scale(0.7) translate(0.5, 0) 1B36..1B37: font: noto-balinese combining: true transform: scale(0.7) translate(0.25, 0) 1B38..1B3A: font: noto-balinese combining: true transform: scale(0.7) translate(0.3, -0.2) 1B3B..1B41: svg: true combining: true 1B42: font: noto-balinese combining: true transform: scale(0.7) translate(0.4, 0.1) 1B43: font: noto-balinese combining: true transform: scale(0.7) translate(0.5, 0.1) 1B44: font: noto-balinese combining: true transform: scale(0.5) translate(0.5, 0) 1B46: font: noto-balinese transform: scale(0.5, 0.7) translate(0, -0.2) 1B4C..1B4F: notdef 1B6B: font: noto-balinese combining: true transform: scale(0.7) translate(0.2, 0) 1B6C: font: noto-balinese combining: true transform: scale(0.7) translate(0.2, -0.2) 1B6D..1B73: font: noto-balinese combining: true transform: scale(0.7) translate(0.3, 0) 1B7D..1B7F: notdef # Sundanese 1B80..1BBF: font: noto-sundanese transform: scale(0.7) 1B80..1B81: font: noto-sundanese combining: true transform: scale(0.7) translate(0.2, 0.1) 1B82: font: noto-sundanese combining: true transform: scale(0.7) translate(0.45, -0.1) 1BA1..1BA2: font: noto-sundanese combining: true transform: scale(0.7) translate(0.3, -0.1) 1BA3: font: noto-sundanese combining: true transform: scale(0.7) translate(0.4, -0.1) 1BA4: font: noto-sundanese combining: true transform: scale(0.7) translate(0.25, 0.1) 1BA5: font: noto-sundanese combining: true transform: scale(0.7) translate(0.4, -0.1) 1BA6: font: noto-sundanese combining: true transform: scale(0.7) translate(-0.3, 0) 1BA7: font: noto-sundanese combining: true transform: scale(0.7) translate(0.4, 0) 1BA8..1BA9: font: noto-sundanese combining: true transform: scale(0.7) translate(0.25, 0.1) 1BAA: font: noto-sundanese combining: true transform: scale(0.7) translate(0.4, 0) 1BAB: font: noto-sundanese box: true transform: scale(0.7) translate(0, 0.3) 1BAC..1BAD: font: noto-sundanese combining: true transform: scale(0.7) translate(0.4, -0.1) 1BAF: font: noto-sundanese transform: scale(0.6, 0.7) # Batak 1BC0..1BFF: font: noto-batak transform: scale(0.8) translate(0, -0.1) 1BE6: font: noto-batak combining: true transform: scale(0.8) translate(0.2, 0) 1BE7: font: noto-batak combining: true transform: scale(0.8) translate(0.4, -0.1) 1BE8: font: noto-batak combining: true transform: scale(0.8) translate(0.2, 0) 1BE9..1BEB: font: noto-batak combining: true transform: scale(0.8) translate(0.4, -0.15) 1BEC: font: noto-batak combining: true transform: scale(0.7, 0.8) translate(0.5, -0.15) 1BED: font: noto-batak combining: true transform: scale(0.8) translate(0.3, 0) 1BEE..1BEF: font: noto-batak combining: true transform: scale(0.8) translate(0.2, -0.1) 1BF0..1BF1: font: noto-batak combining: true transform: scale(0.8) translate(0.2, -0.1) 1BF2: font: noto-batak combining: true transform: scale(0.7, 0.8) translate(0.5, -0.15) 1BF3: font: noto-batak combining: true transform: scale(0.8) translate(0.4, -0.1) 1BF4..1BFB: notdef 1BFC..1BFF: font: noto-batak transform: scale(0.8) translate(0, 0.05) ================================================ FILE: data/codepoints/1C00.yml ================================================ # Lepcha 1C00..1C4F: font: mingzat transform: scale(0.7) translate(0, -0.1) 1C20: font: mingzat transform: scale(0.7) translate(-0.05, -0.1) 1C24..1C26: font: mingzat combining: true transform: scale(0.7) translate(0.4, -0.1) 1C27..1C29: font: mingzat combining: true transform: scale(0.6) translate(-0.5, -0.1) 1C2A..1C2B: font: mingzat combining: true transform: scale(0.6) translate(0.5, -0.2) 1C2C: font: mingzat combining: true transform: scale(0.7) translate(0.4, -0.35) 1C2D..1C33: font: mingzat combining: true transform: scale(0.7) translate(0.4, 0.1) 1C34..1C35: font: mingzat combining: true transform: scale(0.7) translate(-0.5, -0.1) 1C36: font: mingzat combining: true transform: scale(0.7) translate(0.4, 0.1) 1C37: font: mingzat combining: true transform: scale(0.7) translate(0.4, -0.35) 1C38..1C3A: notdef 1C4A..1C4C: notdef # Ol Chiki 1C50..1C7F: font: noto-ol-chiki transform: scale(0.9) # Cyrillic Extended-C 1C80..1C8F: font: ponomar transform: scale(0.8) 1C89..1C8F: notdef # Georgian Extended 1C90..1CBF: font: dejavu transform: scale(0.8) early: true 1C90..1CB6: font: dejavu transform: scale(0.7) early: true codepoint: - 0xF400 - 0xF401 - 0xF402 - 0xF403 - 0xF404 - 0xF405 - 0xF406 - 0xF407 - 0xF408 - 0xF409 - 0xF40A - 0xF40B - 0xF40C - 0xF40D - 0xF40E - 0xF40F - 0xF410 - 0xF411 - 0xF412 - 0xF413 - 0xF414 - 0xF415 - 0xF416 - 0xF417 - 0xF418 - 0xF419 - 0xF41A - 0xF41B - 0xF41C - 0xF41D - 0xF41E - 0xF41F - 0xF420 - 0xF421 - 0xF422 - 0xF423 - 0xF424 - 0xF425 - 0xF426 1CB7: transform: translate(0, -0.02) scale(0.7) early: true svg: true 1CB8: font: dejavu transform: scale(0.7) scale(-1, 1) codepoint: 0xF417 early: true 1CB9: font: dejavu transform: translate(0, -0.05) scale(0.7) rotate(180) codepoint: 0xF402 early: true 1CBA: transform: scale(0.7) svg: true early: true 1CBB..1CBC: notdef 1CBD: transform: scale(0.7) early: true svg: true 1CBE: font: dejavu transform: translate(0, -0.05) scale(0.7) rotate(180) codepoint: 0xF422 early: true 1CBF: transform: scale(0.7) svg: true early: true # Sundanese Supplement 1CC0..1CCF: font: noto-sundanese transform: scale(0.7) 1CC4: font: noto-sundanese transform: scale(0.55, 0.7) translate(-0.05, 0) 1CC7: font: noto-sundanese transform: scale(0.55, 0.7) translate(-0.05, 0) 1CC8..1CCF: notdef # Vedic Extensions 1CD0..1CFF: font: noto-devanagari 1CD0..1CD2: font: noto-devanagari combining: true transform: translate(0.15, 0.2) 1CD4: font: noto-devanagari combining: true transform: translate(0.15, -0.05) 1CD5..1CD7: font: noto-devanagari combining: true transform: translate(0.25, -0.2) 1CD8..1CD9: font: noto-devanagari combining: true transform: translate(0.15, -0.2) 1CDA..1CDB: font: noto-devanagari combining: true transform: translate(0.1, 0.15) 1CDC..1CDE: font: noto-devanagari combining: true transform: translate(0.15, -0.2) 1CDF: font: noto-devanagari combining: true transform: translate(0.25, -0.2) 1CE0: font: noto-devanagari combining: true transform: translate(0.2, 0.1) 1CE1: font: noto-devanagari combining: true transform: translate(0.2, 0) scale(0.9) 1CE2: font: noto-devanagari combining: true transform: translate(0.1, 0) 1CE3: font: noto-devanagari combining: true transform: translate(0.2, -0.05) 1CE4..1CE5: font: noto-devanagari combining: true transform: translate(-0.2, -0.05) 1CE6..1CE7: font: noto-devanagari combining: true transform: translate(0.2, -0.05) 1CE8: font: noto-devanagari combining: true transform: translate(-0.2, -0.05) 1CED: font: noto-devanagari combining: true transform: translate(0, -0.2) 1CF2..1CF3: font: noto-devanagari combining: true transform: translate(0.3, -0.05) scale(0.8) 1CF4: font: noto-devanagari combining: true transform: translate(0.15, 0.3) 1CF7: svg: true combining: true 1CF8..1CF9: svg: true combining: true 1CFA: svg: true transform: scale(0.8) early: true 1CFB..1CFF: notdef # Phonetic Extensions 1D00..1D7F: font: doulos transform: scale(0.9) translate(0, -0.05) # Phonetic Extensions Supplement 1D80..1DBF: font: doulos transform: scale(0.9) translate(0, -0.05) # Combining Diacritical Marks Supplement 1DC0..1DFF: font: doulos combining: true 1DC0..1DC1: font: noto-serif combining: true transform: translate(0, 0.1) 1DC2: font: noto-serif combining: true transform: translate(0, -0.2) 1DC3..1DC9: font: noto-serif combining: true transform: translate(0, 0.1) 1DCA: font: noto-serif combining: true transform: translate(0, -0.2) 1DCB..1DCE: font: free-serif combining: true transform: scale(0.9, 1) translate(0.3, 0) 1DCF: font: free-serif combining: true transform: translate(0.2, -0.2) 1DD0: font: junicode combining: true transform: translate(0.3, -0.2) 1DD1..1DD2: font: junicode combining: true transform: translate(0.2, 0) 1DD3..1DE6: font: free-serif combining: true transform: translate(0.2, 0) 1DE7: font: free-serif combining: true codepoint: 0x03B1 transform: scale(0.4) translate(0, -0.75) 1DE8: font: free-serif combining: true codepoint: 0x62 transform: scale(0.4) translate(0, -0.75) 1DE9: font: free-serif combining: true codepoint: 0x03B2 transform: scale(0.4) translate(0, -0.75) 1DEA: font: free-serif combining: true codepoint: 0x0259 transform: scale(0.4) translate(0, -0.75) 1DEB: font: free-serif combining: true codepoint: 0x66 transform: scale(0.4) translate(0, -0.75) 1DEC: font: quivira combining: true codepoint: 0xAB38 transform: scale(0.4) translate(0, -0.75) # TODO: Add slash 1DED: font: free-serif combining: true codepoint: 0x6F transform: scale(0.4) translate(0, -0.75) 1DEE: font: free-serif combining: true codepoint: 0x70 transform: scale(0.4) translate(0, -0.85) 1DEF: font: free-serif combining: true codepoint: 0x0283 transform: scale(0.4) translate(0, -0.85) # TODO: Add slash 1DF0: font: free-serif combining: true codepoint: 0x75 transform: scale(0.4) translate(0, -0.75) 1DF1: font: free-serif combining: true codepoint: 0x77 transform: scale(0.4) translate(0, -0.75) 1DF2: font: free-serif combining: true codepoint: 0xE4 transform: scale(0.4) translate(0, -0.75) 1DF3: font: free-serif combining: true codepoint: 0xF6 transform: scale(0.4) translate(0, -0.75) 1DF4: font: free-serif combining: true codepoint: 0xFC transform: scale(0.4) translate(0, -0.75) 1DF5: font: free-serif combining: true codepoint: 0x02D4 transform: translate(0, -0.5) 1DF6..1DF9: svg: true combining: true 1DFA..1DFA: notdef 1DFB: font: nishiki combining: true transform: translate(0.3, 0.1) 1DFC: font: free-serif combining: true transform: translate(0, -0.15) 1DFD: font: free-serif combining: true transform: translate(0.25, -0.15) 1DFE: font: free-serif combining: true transform: translate(0.2, 0) 1DFF: font: free-serif combining: true transform: translate(0.3, -0.15) ================================================ FILE: data/codepoints/1E00.yml ================================================ # Latin Extended Additional 1E00..1EFF: font: free-serif transform: scale(0.8) # Greek Extended 1F00..1FFF: font: free-serif transform: scale(0.8) 1F16..1F17: notdef 1F1E..1F1F: notdef 1F46..1F47: notdef 1F4E..1F4F: notdef 1F58: notdef 1F5A: notdef 1F5C: notdef 1F5E: notdef 1F7E..1F7F: notdef 1FB5: notdef 1FC5: notdef 1FD4..1FD5: notdef 1FDC: notdef 1FF0..1FF1: notdef 1FF5: notdef 1FFF: notdef ================================================ FILE: data/codepoints/2000.yml ================================================ # General Punctuation 2000..206F: font: symbola transform: translate(0, -0.05) 2000..200F: control: - NQ\nSP - MQ\nSP - EN\nSP - EM\nSP - 3/M\nSP - 4/M\nSP - 6/M\nSP - F\nSP - P\nSP - TH\nSP - H\nSP - ZW\nSP - ZW\nNJ - ZW\nJ - LRM - RLM 2011: control: NB\n- 2028..202F: control: - L\nSEP - P\nSEP - LRE - RLE - PDF - LRO - RLO - NNB\nSP 2030: font: free-serif 2031: font: free-serif transform: scale(0.75, 1) 205F: control: MM\nSP 2060: control: WJ 2061..2062: svg: true box: true 2063: font: doulos codepoint: 0x2C transform: translate(0, -0.2) box: true 2064: svg: true box: true 2065: notdef 2066..206F: control: - LRI - RLI - FSI - PDI - I\nSS - A\nSS - I\nAFS - A\nAFS - NA\nDS - NO\nDS # Superscripts and Subscripts 2070..209F: font: doulos transform: scale(0.95) translate(0, -0.05) 2072..2073: notdef 208F: notdef 209D..209F: notdef # Currency Symbols 20A0..20CF: font: free-serif transform: scale(0.9) 20AF: font: free-serif transform: scale(0.7) 20BA..20BD: font: doulos 20BE: font: symbola 20BF: font: btc codepoint: 0x42 transform: scale(0.8) 20C0..20CF: notdef # Combining Diacritical Marks for Symbols 20D0..20FF: font: symbola combining: true 20D0..20DC: font: symbola combining: true transform: translate(0.25, 0.05) 20D2..20D3: font: symbola combining: true transform: translate(0.25, -0.1) 20D8..20DA: font: symbola combining: true transform: translate(0.25, -0.05) 20DD..20E3: font: symbola combining: true transform: translate(0.5, -0.1) 20E1: font: symbola combining: true transform: translate(0.25, 0.1) 20E4: font: symbola combining: true transform: translate(0.5, -0.05) 20E5..20E6: font: symbola combining: true transform: translate(0.25, -0.1) 20E7: font: symbola combining: true transform: translate(0.25, 0) 20E8: font: symbola combining: true transform: translate(0.25, -0.2) 20E9: font: symbola combining: true transform: translate(0.25, 0) 20EA..20EB: font: symbola combining: true transform: translate(0.25, -0.1) 20EC..20EF: font: symbola combining: true transform: translate(0.25, -0.2) 20F0: font: symbola combining: true transform: translate(0.25, 0) 20F1..20FF: notdef # Letterlike Symbols 2100..214F: font: symbola transform: scale(0.9) 210B: font: symbola transform: scale(0.9) translate(-0.1, 0) 2117: font: symbola transform: scale(0.9) translate(0, -0.1) 2121: font: symbola transform: scale(0.7, 0.9) 2122: font: symbola transform: scale(0.8, 0.9) 212C: font: symbola transform: scale(0.9) translate(-0.05, 0) 2130..2131: font: symbola transform: scale(0.9) translate(-0.1, 0) 2133: font: symbola transform: scale(0.8, 0.9) translate(-0.05, 0) 213B: font: symbola transform: scale(0.7, 0.9) # Number Forms 2150..218F: font: symbola transform: scale(0.9) 215F: font: symbola transform: scale(0.9) translate(-0.2, 0) 2166: font: symbola transform: scale(0.75, 0.9) 2167: font: symbola transform: scale(0.6, 0.9) 216B: font: symbola transform: scale(0.8, 0.9) 2177: font: symbola transform: scale(0.8, 0.9) 218C..218F: notdef # Arrows 2190..21FF: font: symbola transform: scale(0.9) translate(0, -0.05) ================================================ FILE: data/codepoints/2200.yml ================================================ # Mathematical Operators 2200..22FF: font: symbola transform: scale(0.9) translate(0, -0.05) 22A6..22AF: font: symbola transform: scale(0.9) 22D8..22D9: font: symbola transform: scale(0.75, 0.9) translate(0, -0.05) # Miscellaneous Technical 2300..23FF: font: symbola transform: scale(0.9) 23B2..23B3: font: symbola transform: scale(0.8) 23D4..23D6: font: symbola transform: scale(0.8) 23FF: font: observer-symbol codepoint: 0x6F transform: scale(0.9) # Control Pictures 2400..243F: font: quivira 2427..243F: notdef # Optical Character Recognition 2440..245F: font: symbola 244B..245F: notdef # Enclosed Alphanumerics 2460..24FF: font: symbola transform: scale(0.9) translate(0, -0.05) # Box Drawing 2500..257F: font: symbola transform: scale(0.9) translate(0, -0.05) # Block Elements 2580..259F: font: symbola transform: scale(0.9) translate(0, -0.05) # Geometric Shapes 25A0..25FF: font: symbola transform: scale(0.9) translate(0, -0.05) # Miscellaneous Symbols 2600..26FF: font: symbola transform: scale(0.9) translate(0, -0.05) # Dingbats 2700..27BF: font: symbola transform: scale(0.9) 275B..2793: font: symbola transform: scale(0.9) translate(0, -0.05) # Miscellaneous Mathematical Symbols-A 27C0..27EF: font: symbola transform: scale(0.9) translate(0, -0.05) # Supplemental Arrows-A 27F0..27FF: font: symbola transform: scale(0.9) translate(0, -0.05) 27F4..27FF: font: symbola transform: scale(0.65) translate(0, -0.05) # Braille Patterns 2800..28FF: font: symbola transform: scale(0.95) translate(0.1, -0.1) # Supplemental Arrows-B 2900..297F: font: symbola transform: scale(0.9) translate(0, -0.05) # Miscellaneous Mathematical Symbols-B 2980..29FF: font: symbola transform: scale(0.9) translate(0, -0.05) # Supplemental Mathematical Operators 2A00..2AFF: font: symbola transform: scale(0.9) translate(0, -0.05) 2A0C: font: symbola transform: scale(0.7, 0.9) translate(0, -0.05) 2A4A..2A4B: font: symbola transform: scale(0.8, 0.9) translate(0, -0.05) 2AF7..2AF8: font: symbola transform: scale(0.8) translate(0, -0.05) # Miscellaneous Symbols and Arrows 2B00..2BFF: font: symbola transform: scale(0.9) translate(0, -0.05) 2B32..2B33: font: symbola transform: scale(0.7) translate(0, -0.05) 2B74..2B75: notdef 2B96..2B97: notdef 2BBA: early: true font: symbola codepoint: 0x29C9 transform: scale(0.9) translate(0, -0.05) scale(-1, 1) 2BBB..2BBC: early: true svg: true 2BC9: early: true font: nishiki transform: scale(0.85) 2BD2: font: nishiki transform: scale(0.85) # TODO: The glyph shape of U+2BD6 PLUTO FORM FIVE is questionable 2BD3..2BEB: # Early maping early: true font: nishiki transform: scale(0.85) 2BF0..2BFE: early: true font: nishiki transform: scale(0.85) 2BFF: early: true font: nishiki transform: scale(0.85) ================================================ FILE: data/codepoints/2C00.yml ================================================ # Glagolitic 2C00..2C5F: font: quivira transform: scale(0.8) 2C27: font: quivira transform: scale(0.7, 0.8) 2C29: font: quivira transform: scale(0.7, 0.8) 2C2F: notdef 2C30..2C5F: font: quivira transform: translate(0, -0.1) 2C5F: notdef # Latin Extended-C 2C60..2C7F: font: doulos transform: scale(0.8) translate(0, 0) 2C7C: font: doulos transform: scale(0.8) translate(0, -0.1) # Coptic 2C80..2CFF: font: analecta transform: scale(0.8) 2CEF: font: analecta combining: true transform: scale(0.8) translate(0.4, 0.1) 2CF0..2CF1: font: analecta combining: true transform: scale(0.8) translate(0.25, 0.1) 2CF4..2CF8: notdef # Georgian Supplement 2D00..2D2F: font: noto-georgian transform: scale(0.8) 2D26: notdef 2D27: font: quivira transform: scale(0.9) translate(0, -0.1) 2D28..2D2C: notdef 2D2D: font: quivira transform: scale(0.9) translate(0, -0.1) 2D2E..2D2F: notdef # Tifinagh 2D30..2D7F: font: noto-tifinagh transform: scale(0.8) 2D68..2D6E: notdef 2D71..2D7E: notdef 2D7F: font: noto-tifinagh combining: true box: true transform: scale(0.8) translate(0, -0.1) # Ethiopic Extended 2D80..2DDF: font: abyssinica transform: scale(0.8) 2D97..2D9F: notdef 2DA7: notdef 2DAF: notdef 2DB7: notdef 2DBF: notdef 2DC7: notdef 2DCF: notdef 2DD7: notdef 2DDF: notdef # Cyrillic Extended-A 2DE0..2DFF: font: free-serif combining: true transform: translate(0.1, -0.05) 2DF2..2DF3: font: free-serif combining: true transform: translate(0.15, -0.05) 2DF5: font: free-serif combining: true transform: translate(0.2, -0.05) 2DFB..2DFF: font: free-serif combining: true transform: translate(0.15, -0.05) ================================================ FILE: data/codepoints/2E00.yml ================================================ # Supplemental Punctuation 2E00..2E7F: font: symbola transform: scale(0.9) translate(0, -0.05) # TODO: render hyphens 2E3A: control: 2M 2E3B: control: 3M 2E45..2E49: font: nishiki transform: scale(0.8) 2E4A..2E4F: # Early mapping early: true font: nishiki transform: scale(0.8) 2E50..2E7F: notdef # CJK Radicals Supplement 2E80..2EFF: font: - ipaexm - hanamin-a transform: scale(0.9) translate(0, 0.05) 2E9A: notdef 2EF4..2EFF: notdef # Kangxi Radicals 2F00..2FDF: font: ipaexm transform: scale(0.9) translate(0, 0.05) 2FD6..2FDF: notdef # Empty 2FE0..2FEF: notdef # Ideographic Description Characters 2FF0..2FFF: font: ipaexm transform: scale(0.9) translate(0, 0.05) 2FFC..2FFF: notdef ================================================ FILE: data/codepoints/3000.yml ================================================ # CJK Symbols and Punctuation 3000..303F: font: ipaexm transform: scale(0.9) translate(0, 0.05) 3000: control: ID\nSP 301A..301B: font: noto-cjk-jp transform: scale(0.9) translate(0, 0.05) 301E: font: ipaexm codepoint: 0x301D transform: scale(-0.9, 0.9) 3021..3029: font: babel-stone transform: scale(0.9) 302A: font: hancom combining: true transform: translate(0.4, -0.2) 302B: font: hancom combining: true transform: translate(0.4, 0.15) 302C: font: hancom combining: true transform: translate(0.2, 0.15) 302D: font: hancom combining: true transform: translate(0.2, -0.2) 302E..302F: font: hancom combining: true transform: translate(0.7, 0) 3030..3032: font: hanamin-a transform: scale(0.9) translate(0, 0.05) 3037: font: hancom transform: translate(0, 0.1) 3038: font: ipaexm codepoint: 0x5341 transform: scale(0.9) translate(0, 0.05) 3039: font: ipaexm codepoint: 0x5efe transform: scale(0.9) translate(0, 0.05) 303A: font: ipaexm codepoint: 0x5345 transform: scale(0.9) translate(0, 0.05) 3038: font: ipaexm codepoint: 0x5341 transform: scale(0.9) translate(0, 0.05) 3039: font: ipaexm codepoint: 0x5efe transform: scale(0.9) translate(0, 0.05) 303A: font: ipaexm codepoint: 0x5345 transform: scale(0.9) translate(0, 0.05) 303E: font: hancom box: true transform: translate(0, 0.05) 303F: font: hancom # Hiragana 3040..309F: font: ipaexm transform: scale(0.9) translate(0, 0.05) 3040: notdef 3097..3098: notdef 3099..309A: font: ipaexm combining: true transform: scale(0.9) translate(-0.1, 0.15) # Katakana 30A0..30FF: font: ipaexm transform: scale(0.9) translate(0, 0.05) # Bopomofo 3100..312F: font: babel-stone transform: scale(0.9) translate(0, 0.05) 3100..3104: notdef 312E: svg: true 312F: # Early mapping early: true svg: true # Hangul Compatibility Jamo 3130..318F: font: unbatang transform: translate(0, -0.05) 3130: notdef 3164: control: HF 318F: notdef # Kanbun 3190..319F: font: babel-stone transform: scale(0.9) translate(-0.25, 0) # Bopomofo Extended 31A0..31BF: font: babel-stone transform: scale(0.9) translate(0, 0.05) 31B4..31B7: font: babel-stone transform: scale(0.9) translate(-0.25, 0.05) 31BB..31BF: notdef # CJK Strokes 31C0..31EF: font: hanamin-a transform: translate(0, 0.05) 31CF: font: ipaexm codepoint: 0x4e40 transform: scale(0.9) translate(0, 0.05) 31D0: font: ipaexm codepoint: 0x4e00 transform: scale(0.9) translate(0, 0.05) 31D1: font: ipaexm codepoint: 0x4e28 transform: scale(0.9) translate(0, 0.05) 31D3: font: ipaexm codepoint: 0x4e3f transform: scale(0.9) translate(0, 0.05) 31D4: font: ipaexm codepoint: 0x4e36 transform: scale(0.9) translate(0, 0.05) 31D5: font: ipaexm codepoint: 0x4e3f transform: scale(0.9) translate(0, 0.05) #31D6: # font: ipaexm # codepoint: 0x4e5b # transform: scale(0.9) translate(0, 0.05) #31D9: # font: ipamjm # codepoint: 0x2010c # transform: scale(0.9) translate(0, 0.05) 31DA: font: ipaexm codepoint: 0x4e85 transform: scale(0.9) translate(0, 0.05) #31DC: # font: ipamjm # codepoint: 0x200cb # transform: scale(0.9) translate(0, 0.05) 31DD: font: ipaexm codepoint: 0x4e40 transform: scale(0.9) translate(0, 0.05) #31DE: # font: ipamjm # codepoint: 0x200d1 # transform: scale(0.9) translate(0, 0.05) 31DF: font: ipamjm codepoint: 0x4e5a transform: scale(0.9) translate(0, 0.05) 31E0: font: ipaexm codepoint: 0x4e59 transform: scale(0.9) translate(0, 0.05) #31E1: # font: ipamjm # codepoint: 0x2010e # transform: scale(0.9) translate(0, 0.05) 31E3: font: babel-stone transform: scale(0.9) translate(0, 0.05) 31E4..31EF: notdef # Katakana Phonetic Extensions 31F0..31FF: font: ipaexm transform: scale(0.9) translate(0, 0.05) ================================================ FILE: data/codepoints/3200.yml ================================================ # Enclosed CJK Letters and Months 3200..32FF: font: ipaexm transform: scale(0.9) translate(0, 0.05) 3200..321E: font: hancom transform: scale(0.9) translate(0, 0.05) 321F: notdef 3244..324F: font: hanamin-a transform: scale(0.9) translate(0, 0.05) 3250: font: hancom transform: scale(0.9) translate(0, 0.05) 3260..327F: font: hancom transform: scale(0.9) translate(0, 0.05) 32C0..32CF: font: hancom transform: scale(0.9) translate(0, 0.05) 32FF: notdef # CJK Compatibility 3300..33FF: font: ipaexm transform: scale(0.9) translate(0, 0.05) 332C: svg: true transform: scale(0.85) 3358..337A: font: hancom transform: scale(0.9) translate(0, 0.05) 3380..33FF: font: - ipaexm - hancom transform: scale(0.9) translate(0, 0.05) ================================================ FILE: data/codepoints/3400.yml ================================================ # CJK Unified Ideographs Extension A 3400..4DBF: font: - noto-serif-jp - ipamjm - ipaexm - hanamin-a transform: scale(0.9) translate(0, 0.05) 4DB6..4DBF: notdef # Yijing Hexagram Symbols 4DC0..4DFF: font: nishiki transform: scale(0.9) # CJK Unified Ideographs 4E00..9FFF: font: - noto-serif-jp - ipamjm - ipaexm - hanamin-a transform: scale(0.9) translate(0, 0.05) 9FD6..9FFF: notdef ================================================ FILE: data/codepoints/A000.yml ================================================ # Yi Syllables A000..A48F: font: noto-yi transform: scale(0.95) translate(0, 0.05) A48D..A48F: notdef # Yi Radicals A490..A4CF: font: noto-yi transform: scale(0.95) translate(0, 0.05) A4C7..A4CF: notdef # Lisu A4D0..A4FF: font: lisu ================================================ FILE: data/codepoints/A500.yml ================================================ # Vai A500..A63F: font: wakor transform: scale(0.95) A62C..A63F: notdef # Cyrillic Extended-B A640..A69F: font: quivira transform: scale(0.75) A66F: font: quivira combining: true transform: scale(0.75) translate(0, -0.1) A670: font: quivira combining: true transform: scale(0.75) translate(0.4, 0) A671: font: quivira combining: true transform: scale(0.75) translate(0.25, 0) A672: font: quivira combining: true transform: scale(0.75) translate(0.42, 0) A673: font: quivira combining: true transform: scale(0.75) translate(0, -0.25) A674..A67D: font: quivira combining: true transform: scale(0.75) translate(0, -0.05) A69E: font: free-serif-bold combining: true codepoint: 0x0444 transform: translate(0, -0.35) scale(0.35) A69F: font: quivira combining: true transform: scale(0.75) translate(0, -0.1) # Bamum A6A0..A6FF: font: noto-bamum transform: scale(0.8) A6F0..A6F1: font: noto-bamum combining: true transform: scale(0.8) translate(-0.35, 0.2) A6F8..A6FF: notdef # Modifier Tone Letters A700..A71F: font: charis transform: scale(0.9) A700..A707: font: charis transform: scale(0.9) translate(0, -0.05) A71E..A71F: font: charis transform: scale(0.9) translate(0, -0.15) # Latin Extended-D A720..A7FF: font: doulos transform: scale(0.8) A78F: font: doulos codepoint: 0x00B7 A79A..A79F: font: quivira transform: scale(0.8) # FIXME A7AE: font: doulos codepoint: 0x0054 transform: scale(0.8) A7AF: notdef A7B3: font: free-serif codepoint: 0x03C7 transform: scale(0.8) A7B4: font: free-serif codepoint: 0x0392 transform: scale(0.8) A7B5: font: free-serif codepoint: 0x03B2 transform: scale(0.8) A7B6: font: free-serif codepoint: 0x0460 transform: scale(0.8) A7B7: font: free-serif codepoint: 0x03C9 transform: scale(0.8) A7B8..A7F6: notdef ================================================ FILE: data/codepoints/A800.yml ================================================ # Syloti Nagri A800..A82F: font: noto-syloti-nagri transform: scale(0.8) A802: font: noto-syloti-nagri combining: true transform: scale(0.8) translate(0.3, 0.1) A806: font: noto-syloti-nagri combining: true transform: scale(0.8) translate(0.2, 0.1) A80B: font: noto-syloti-nagri combining: true transform: scale(0.8) translate(0.3, 0.1) A823..A824: font: noto-syloti-nagri combining: true transform: scale(0.8) translate(0.3, 0.1) A825: font: noto-syloti-nagri combining: true transform: scale(0.8) translate(0.2, -0.15) A826: font: noto-syloti-nagri combining: true transform: scale(0.8) translate(0.2, 0.15) A827: font: noto-syloti-nagri combining: true transform: scale(0.8) translate(0.3, 0.1) A82C..A82F: notdef # Common Indic Number Forms A830..A83F: font: annapurna transform: scale(0.8) A839: font: annapurna transform: scale(0.8) translate(0, -0.1) A83A..A83F: notdef # Phags-pa A840..A87F: font: babel-phags-pa transform: scale(0.8) A878..A87F: notdef # Saurashtra A880..A8DF: font: pagul transform: scale(0.9) A880..A881: font: pagul combining: true transform: scale(0.9) translate(0.3, 0) A8B4: font: pagul combining: true transform: scale(0.9) translate(0.35, 0) A8B5: font: pagul combining: true transform: scale(0.9) translate(0.3, 0) A8B6: font: pagul combining: true transform: scale(0.9) translate(0.3, 0.1) A8B7: font: pagul combining: true transform: scale(0.9) translate(0.3, 0) A8B8..A8BC: font: pagul combining: true transform: scale(0.7, 0.9) translate(0.45, 0) A8BD: font: pagul combining: true transform: scale(0.35, 0.9) translate(0.9, 0) A8BE..A8C1: font: pagul combining: true transform: scale(0.7, 0.9) translate(0.45, 0) A8C2..A8C3: font: pagul combining: true transform: scale(0.5, 0.9) translate(0.6, 0) A8C4: font: pagul combining: true transform: scale(0.9) translate(0.3, -0.15) A8C5: font: pagul combining: true transform: scale(0.9) translate(0.3, 0.2) A8C6..A8CD: notdef A8DA..A8DF: notdef # Devanagari Extended A8E0..A8FF: font: annapurna transform: scale(0.8) A8E0..A8F1: font: annapurna combining: true transform: scale(0.8) translate(0.2, 0.4) # FIXME A8FC..A8FD: notdef A8FE..A8FF: notdef # Kayah Li A900..A92F: font: noto-kayah-li transform: scale(0.8) A926..A92A: font: noto-kayah-li combining: true transform: scale(0.8) translate(0.38, 0) A92B..A92D: font: noto-kayah-li combining: true transform: scale(0.8) translate(0.38, -0.1) # Rejang A930..A95F: font: noto-rejang transform: scale(0.8) A947..A949: font: noto-rejang combining: true transform: scale(0.8) translate(-0.3, 0) A94A: font: noto-rejang combining: true transform: scale(0.8) translate(-0.2, 0.2) A94B: font: noto-rejang combining: true transform: scale(0.8) translate(-0.35, 0) A94C: font: noto-rejang combining: true transform: scale(0.8) translate(-0.25, -0.15) A94D: font: noto-rejang combining: true transform: scale(0.8) translate(-0.2, -0.1) A94E: font: noto-rejang combining: true transform: scale(0.8) translate(0, -0.1) A94F..A951: font: noto-rejang combining: true transform: scale(0.8) translate(-0.2, 0.2) A952: font: noto-rejang combining: true transform: scale(0.8) translate(0.3, 0) A953: font: noto-rejang combining: true transform: scale(0.8) translate(-0.2, 0.2) A954..A95E: notdef # Hangul Jamo Extended-A A960..A97F: font: unbatang transform: translate(0.14, -0.03) A97D..A97F: notdef # Javanese A980..A9DF: font: noto-javanese transform: scale(0.6) translate(0, -0.2) A980: font: noto-javanese combining: true transform: scale(0.6) translate(-0.3, 0) A981: font: noto-javanese combining: true transform: scale(0.6) translate(-0.1, -0.1) A982: font: noto-javanese combining: true transform: scale(0.6) translate(-0.2, -0.1) A983: font: noto-javanese combining: true transform: scale(0.6) translate(0.4, -0.2) A9B3: font: noto-javanese combining: true transform: scale(0.6) translate(-0.2, -0.1) A9B4..A9B5: font: noto-javanese combining: true transform: scale(0.6) translate(0.4, -0.1) A9B6..A9B7: font: noto-javanese combining: true transform: scale(0.6) translate(-0.2, 0) A9B8..A9B9: font: noto-javanese combining: true transform: scale(0.6) translate(0.6, -0.2) A9BA..A9BB: font: noto-javanese combining: true transform: scale(0.5, 0.6) translate(-0.6, -0.2) A9BC: font: noto-javanese combining: true transform: scale(0.6) translate(-0.2, -0.1) A9BD..A9BF: font: noto-javanese combining: true transform: scale(0.6) translate(0.4, -0.1) A9C0: font: noto-javanese combining: true transform: scale(0.6) translate(0.2, -0.1) A9C1..A9C2: font: noto-javanese transform: scale(0.5) translate(0, -0.4) A9C3..A9C5: font: noto-javanese transform: scale(0.4, 0.5) translate(0, -0.2) A9CD: font: noto-javanese transform: scale(0.6) translate(0, -0.4) A9CE: notdef A9DA..A9DD: notdef # Myanmar Extended-B A9E0..A9FF: font: padauk transform: scale(0.65) translate(0, -0.1) A9E5: font: padauk combining: true transform: scale(0.65) translate(0.15, -0.1) A9FF: notdef ================================================ FILE: data/codepoints/AA00.yml ================================================ # Cham AA00..AA5F: font: noto-cham transform: scale(0.8) AA0F: font: noto-cham transform: scale(0.8) translate(0.1, 0) AA29..AA2C: font: noto-cham combining: true transform: scale(0.8) translate(0.3, 0.1) AA2D: font: noto-cham combining: true transform: scale(0.8) translate(0.2, 0.1) AA2E: font: noto-cham combining: true transform: scale(0.8) translate(0.3, 0.1) AA2F..AA30: font: noto-cham combining: true transform: scale(0.8) translate(-0.4, 0) AA31: font: noto-cham combining: true transform: scale(0.8) translate(0.3, 0.1) AA32: font: noto-cham combining: true transform: scale(0.8) translate(0.1, 0.1) AA33: font: noto-cham combining: true transform: scale(0.8) translate(0.5, 0) AA34: font: noto-cham combining: true transform: scale(0.8) translate(-0.3, 0) AA35: font: noto-cham combining: true transform: scale(0.8) translate(0.1, -0.1) AA36: font: noto-cham combining: true transform: scale(0.8) translate(0.2, -0.1) AA43: font: noto-cham combining: true transform: scale(0.8) translate(0.3, 0.1) AA4C: font: noto-cham combining: true transform: scale(0.8) translate(0.3, 0) AA4D: font: noto-cham combining: true transform: scale(0.8) translate(0.4, 0) AA37..AA3F: notdef AA4E..AA4F: notdef AA5A..AA5B: notdef # Myanmar Extended-B AA60..AA7F: font: padauk transform: scale(0.65) translate(0, -0.1) AA7B: font: padauk combining: true transform: scale(0.65) translate(0.3, -0.1) AA7C: font: padauk combining: true transform: scale(0.65) translate(0.25, -0.1) AA7D: font: padauk combining: true transform: scale(0.65) translate(0.5, -0.05) # Tai Viet AA80..AADF: font: tai-heritage transform: scale(0.5) translate(-0.1, 0) AA8B: font: tai-heritage transform: scale(0.5) translate(-0.1, -0.2) AAAF: font: tai-heritage transform: scale(0.5) translate(-0.1, -0.2) AAB0: font: tai-heritage combining: true transform: scale(0.5) translate(0.1, 0.1) AAB2..AAB3: font: tai-heritage combining: true transform: scale(0.5) translate(0.1, 0.1) AAB4: font: tai-heritage combining: true transform: scale(0.5) translate(0.3, 0) AAB7..AAB8: font: tai-heritage combining: true transform: scale(0.5) translate(0.1, 0.1) AABE..AABF: font: tai-heritage combining: true transform: scale(0.5) translate(0.1, 0.1) AAC1: font: tai-heritage combining: true transform: scale(0.5) translate(0.1, 0.3) AAC3..AADA: notdef # Meetei Mayek Extensions AAE0..AAFF: font: noto-meetei-mayek transform: scale(0.8) AAEB: font: noto-meetei-mayek combining: true transform: scale(0.8) translate(-0.35, 0) AAEC: font: noto-meetei-mayek combining: true transform: scale(0.8) translate(0.25, -0.15) AAED: font: noto-meetei-mayek combining: true transform: scale(0.8) translate(0.35, 0.15) AAEE: font: noto-meetei-mayek combining: true transform: scale(0.8) translate(-0.4, 0) AAEF: font: noto-meetei-mayek combining: true transform: scale(0.8) translate(0.4, 0) AAF5: font: noto-meetei-mayek combining: true transform: scale(0.8) translate(0.3, -0.2) AAF6: font: noto-meetei-mayek combining: true box: true transform: scale(0.8) translate(0.5, -0.2) AAF7..AAFF: notdef # Ethiopic Extended-A AB00..AB2F: font: abyssinica transform: scale(0.8) AB00: notdef AB07..AB08: notdef AB0F..AB10: notdef AB17..AB1F: notdef AB27: notdef AB2F: notdef # Latin Extended-E AB30..AB6F: font: quivira transform: scale(0.8) # FIXME AB60..AB63: notdef AB66..AB6F: notdef # Cherokee Supplement AB70..ABBF: font: noto-cherokee transform: scale(0.8) # Meetei Mayek ABC0..ABFF: font: noto-meetei-mayek transform: scale(0.8) ABE3..ABE4: font: noto-meetei-mayek combining: true transform: scale(0.8) translate(0.3, 0) ABE5: font: noto-meetei-mayek combining: true transform: scale(0.8) translate(0.3, 0.2) ABE6: font: noto-meetei-mayek combining: true transform: scale(0.8) translate(0.35, 0.2) ABE7: font: noto-meetei-mayek combining: true transform: scale(0.8) translate(0.3, 0) ABE8: font: noto-meetei-mayek combining: true transform: scale(0.8) translate(0.25, -0.2) ABE9: font: noto-meetei-mayek combining: true transform: scale(0.8) translate(0.3, 0.2) ABEA: font: noto-meetei-mayek combining: true transform: scale(0.8) translate(0.3, 0.2) ABEC: font: noto-meetei-mayek combining: true transform: scale(0.8) translate(0.3, 0) ABED: font: noto-meetei-mayek combining: true transform: scale(0.7) translate(-0.05, -0.1) ABEE..ABEF: notdef ABFA..ABFF: notdef ================================================ FILE: data/codepoints/AC00.yml ================================================ # Hangul Syllables AC00..D7AF: font: noto-serif-jp transform: scale(0.9) D7A4..D7AF: notdef ================================================ FILE: data/layouts/bmp-1.ai ================================================ version https://git-lfs.github.com/spec/v1 oid sha256:e63380405b19b32ec296c6eefe51734223ed96d9d8583f3396b0c8d371be23ea size 4030616 ================================================ FILE: data/layouts/bmp-2.ai ================================================ version https://git-lfs.github.com/spec/v1 oid sha256:fc5b77deafa0bc6f6f8fcf51688adf24e171ae116be4951ef98e319288d46140 size 4092613 ================================================ FILE: data/layouts/bmp-3.ai ================================================ version https://git-lfs.github.com/spec/v1 oid sha256:7f6f71d4b733461041bf65faaf851b43a33d9ed55f44c97fb53fb861e7717d4a size 3970740 ================================================ FILE: index.ls ================================================ require! { 'mz/fs' './lib/util': {log, now} './lib/download-fonts' './lib/load-codepoints' './lib/generate-svg' './lib/convert-to-png' './lib/convert-to-pdf' './lib/compose-poster' './configs' 'bluebird': Promise } now -> log 'Downloading fonts...' download-fonts! .then -> log 'Loading codepionts...' load-codepoints! .then (codepoints) -> Promise.map-series configs, (config) -> chart-svg = "#{config.name}-chart.svg" poster-svg = "#{config.name}-poster.svg" poster-png = "#{config.name}-poster.png" poster-pdf = "#{config.name}-poster.pdf" now -> log "Generating #{config.name} SVG..." generate-svg codepoints, config .then (svg) -> Promise.all [ * now -> log "Writing #chart-svg..." fs.write-file chart-svg, svg * now -> log "Composing #poster-svg..." compose-poster svg, config ] .then ([_, poster]) -> Promise.all [ * now -> log "Writing #poster-svg..." fs.write-file poster-svg, poster * now -> log "Generating #poster-png..." convert-to-png poster .then (png) -> log "Writing #poster-png..." fs.write-file poster-png, png ] .then -> log "Generating #poster-pdf..." convert-to-pdf poster-svg, poster-pdf .then -> log 'Done.' .catch (error) -> console.error error process.exit 1 ================================================ FILE: lib/codepoint-builder.ls ================================================ require! { './util': {merge-maps} } flatten = (object, {start, end}) -> # Define model model = | object is \notdef type: \notdef | object is \tofu type: \tofu | object.has-own-property \font => type: \font font-name: if typeof! object.font is \Array then object.font else [object.font] codepoint: object.codepoint | object.has-own-property \control => type: \control short-name: object.control | object.has-own-property \svg => type: \svg | otherwise => throw new Error 'Type not specified' if model.type is \control and typeof! model.short-name is \String model.short-name .= split '\n' .filter (.length > 0) if model.type in <[font svg]> for transform in <[transform scale skew translate rotate combining box early]> if object[transform]? model[transform] = object[transform] map = new Map! # Calculate overrides first for key, value of object codepoints = key.split '..' continue unless codepoints.every (.match /[\da-f]{4,5}/i) codepoints .= map (parse-int _, 16) [submap-start, submap-end] = if codepoints.length is 1 codepoints[0 0] else codepoints[0 1] submap = flatten value, do start: submap-start end: submap-end for codepoint from submap-start to submap-end map.set codepoint, submap.get codepoint # Interpolate by models for codepoint from start to end unless map.has codepoint clone = Object.assign {}, model if model.type is \font if typeof! model.codepoint is \Array clone.codepoint = clone.codepoint[codepoint - start] if model.type is \control if typeof! model.short-name is \Array clone.short-name = clone.short-name[codepoint - start] map.set codepoint, clone map module.exports = (object) -> maps = for key, value of object codepoints = key.split '..' .map (parse-int _, 16) [start, end] = if codepoints.length is 1 codepoints[0 0] else codepoints[0 1] flatten value, {start, end} merge-maps maps ================================================ FILE: lib/compose-poster.ls ================================================ require! { 'mz/fs' './util': {log} jsdom progress: Progress xmlserializer } module.exports = (chart-svg, config) -> poster-svg <- fs.read-file "data/layouts/#{config.layout}.svg" .then resolve, reject <- new Promise _ error, window <- jsdom.env '' [require.resolve 'snapsvg'] return reject error if error {Snap, document} = window paper = Snap 7016 9933 # 594x841mm * 300dpi root-group = paper.group! root-group.transform "scale(#{300 / 72})" chart = paper.group!append-to root-group poster = paper.group!append-to root-group chart-element = Snap.parse chart-svg for child in Array::slice.call chart-element.node.children, 0 chart.append child poster-element = Snap.parse poster-svg for child in Array::slice.call poster-element.node.children, 0 poster.append child chart.transform "translate(#{config.chart.x}, #{config.chart.y}) scale(#{1627.09 / 3840})" svg = xmlserializer.serialize-to-string paper.node window.close! resolve svg ================================================ FILE: lib/convert-to-pdf.ls ================================================ require! { nightmare: Nightmare 'file-url' } module.exports = (svg-path, pdf-path) -> nightmare = Nightmare! nightmare .goto file-url svg-path .evaluate -> svg = document.query-selector 'svg' svg.set-attribute 'viewBox', '0 0 7016 9933' svg.set-attribute 'width', '594mm' svg.set-attribute 'height', '841mm' .pdf pdf-path, do margins-type: 1 page-size: width: 594000 height: 841000 print-background: false landscape: false .end! ================================================ FILE: lib/convert-to-png.ls ================================================ require! { svg2png } module.exports = (svg) -> svg-data = Buffer.from svg svg2png svg-data ================================================ FILE: lib/download-fonts.ls ================================================ require! { path download './util': {log, now} 'mz/fs' 'mkdirp-then': mkdirp bluebird: Promise } fonts = 'Symbola': 'https://www.wfonts.com/download/data/2016/04/23/symbola/symbola.zip' 'Noto': 'https://noto-website.storage.googleapis.com/pkgs/Noto-unhinted.zip' 'IPAexm': 'https://moji.or.jp/wp-content/ipafont/IPAexfont/ipaexm00401.zip' 'IPAmjm': 'https://dforest.watch.impress.co.jp/library/i/ipamjfont/10750/ipamjm00601.zip' 'hanazono': 'http://jaist.dl.osdn.jp/hanazono-font/64385/hanazono-20160201.zip' 'Doulos': 'https://software.sil.org/downloads/r/doulos/DoulosSIL-5.000.zip' 'FreeFont': 'https://ftp.gnu.org/gnu/freefont/freefont-ttf-20120503.zip' 'Hancom': 'http://cdn.hancom.com/pds/docs/HancomFont.zip' 'Scheherazade': 'http://software.sil.org/downloads/r/scheherazade/Scheherazade-2.100.zip' 'Annapurna': 'http://software.sil.org/downloads/r/annapurna/AnnapurnaSIL-1.202.zip' 'Manjari': 'http://www.malayalamtype.com/fonts/Manjari-Regular.ttf' 'tlwg': 'https://linux.thai.net/pub/thailinux/software/fonts-tlwg/fonts/ttf-tlwg-0.5.0.tar.gz' 'Jomolhari': 'https://collab.its.virginia.edu/access/content/group/26a34146-33a6-48ce-001e-f16ce7908a6a/Tibetan%20fonts/Tibetan%20Unicode%20Fonts/Jomolhari-alpha003.zip' 'Padauk': 'http://software.sil.org/downloads/r/padauk/padauk-3.002.zip' 'Quivira': 'http://www.quivira-font.com/files/Quivira.otf' 'UnFonts': 'http://ftp.jaist.ac.jp/pub/Linux/Momonga/development/source/SOURCES/2607-un-fonts-core-1.0.2-080608.tar.gz' 'Abyssinica': 'http://software.sil.org/downloads/r/abyssinica/AbyssinicaSIL-1.500.zip' 'NotoSansCherokee': 'https://github.com/googlefonts/noto-fonts-alpha/raw/main/from-glyphsapp/unhinted/ttf/sans/NotoSansCherokee-Regular.ttf' 'MongolianScript': 'https://web.archive.org/web/20160707014328if_/http://font.bolorsoft.com/download/fonts.zip' 'Namdhinggo': 'http://scripts.sil.org/cms/scripts/render_download.php?format=file&media_id=NamdhinggoSIL1.004&filename=NamdhinggoSIL1.004.zip' 'DaiBanna': 'http://scripts.sil.org/cms/scripts/render_download.php?format=file&media_id=DaiBanna-2.200.zip&filename=DaiBanna-2.200.zip' 'Nishiki': 'https://umihotaru.work/nishiki-teki.zip' 'Mingzat': 'http://scripts.sil.org/cms/scripts/render_download.php?format=file&media_id=Mingzat-0.100&filename=Mingzat-0.100.zip' 'PonomarUnicode': 'http://www.ponomar.net/files/PonomarUnicode.zip' 'junicode': 'https://sourceforge.net/projects/junicode/files/junicode/junicode-0-7-8/junicode-0-7-8.zip' 'BTC': 'https://github.com/RWOverdijk/BitKey/raw/master/client/src/fonts/BTC.ttf' 'ObserverSymbol': 'http://hypertexthero.com/static/img/observer-symbol/observer-symbol-latest.zip' 'Analecta': 'https://www.wfonts.com/download/data/2016/06/09/analecta/analecta.zip' 'BabelStoneHan': 'http://www.babelstone.co.uk/Fonts/Download/BabelStoneHan.zip' 'OpenSans': 'http://www.opensans.com/download/open-sans.zip' 'DejaVu': 'https://sourceforge.net/projects/dejavu/files/dejavu/2.37/dejavu-fonts-ttf-2.37.zip' 'JGLao': 'https://github.com/hakatashi/font-archive/raw/master/jglao.zip' 'NotoSerifCJKjp': 'https://noto-website.storage.googleapis.com/pkgs/NotoSerifCJKjp-hinted.zip' 'LisuUnicode': 'https://github.com/phjamr/LisuUnicode/raw/master/LisuUnicode-Regular.ttf' 'Wakor': 'http://www.evertype.com/fonts/vai/wakorfont.zip' 'Charis': 'https://software.sil.org/downloads/r/charis/CharisSIL-5.000.zip' 'BabelStonePhagsPa': 'http://www.babelstone.co.uk/Fonts/Download/BabelStonePhagspaBook_v2.ttf' 'Pagul': 'https://sourceforge.net/projects/pagul/files/Pagul_v1.0.zip' 'TaiHeritage': 'https://software.sil.org/downloads/r/taiheritage/TaiHeritagePro-2.600.zip' module.exports = -> Promise.each do * Object.keys fonts * (directory) -> url = fonts[directory] path-name = path.join \fonts directory now -> fs.readdir path-name .then (files) -> return Promise.reject! if files.length is 0 log "#directory is already downloaded." .catch -> log "#path-name not exists. Downloading..." mkdirp path-name .then -> headers = if directory is 'Hancom' {referer: 'http://www.hancom.com/'} else if directory in <[Namdhinggo DaiBanna Mingzat]> {accept: '*/*'} else {} extract = if directory in <[Quivira NotoSansCherokee BTC Manjari LisuUnicode BabelStonePhagsPa]> false else true download url, path-name, {extract, headers} ================================================ FILE: lib/generate-svg.ls ================================================ require! { 'mz/fs' './util': {log, to-hex} jsdom path hilbert: {Hilbert2d} progress: Progress xmlserializer 'opentype.js' 'camel-case' util } font-counts = new Map! font-data = doulos: name: 'Doulos SIL 5.000' URL: 'http://software.sil.org/doulos/' author: 'SIL International' license: 'SIL OFL 1.1' licenseURL: 'http://scripts.sil.org/ofl' path: 'Doulos/DoulosSIL-5.000/DoulosSIL-R.ttf' symbola: name: 'Symbola' URL: 'http://users.teilar.gr/~g1951d/' author: 'George Douros' license: 'Permissive License' licenseURL: 'http://users.teilar.gr/~g1951d/' path: 'Symbola/Symbola.ttf' ipamjm: name: 'IPA mj Mincho' URL: 'https://moji.or.jp/mojikiban/font/' author: 'Information-technology Promotion Agency, Japan (IPA)' license: 'IPA Font License v1.0' licenseURL: 'https://moji.or.jp/ipafont/license/' path: 'IPAmjm/ipamjm.ttf' ipaexm: name: 'IPA ex Mincho' URL: 'https://moji.or.jp/ipafont/ipaex00401/' author: 'Information-technology Promotion Agency, Japan (IPA)' license: 'IPA Font License v1.0' licenseURL: 'https://moji.or.jp/ipafont/ipaex00401' path: 'IPAexm/ipaexm00401/ipaexm.ttf' hanamin-a: name: 'Hanazono Mincho' URL: 'http://fonts.jp/hanazono/' author: 'GlyphWiki Project' license: 'SIL OFL 1.1' licenseURL: 'http://scripts.sil.org/ofl' path: 'hanazono/HanaMinA.ttf' free-serif: name: 'GNU FreeFont' URL: 'https://www.gnu.org/software/freefont/' author: 'GNU FreeFont Contributors' license: 'GPLv3+FE' licenseURL: 'https://www.gnu.org/software/freefont/license.html' path: 'FreeFont/freefont-20120503/FreeSerif.ttf' free-serif-bold: name: 'GNU FreeFont' URL: 'https://www.gnu.org/software/freefont/' author: 'GNU FreeFont Contributors' license: 'GPLv3+FE' licenseURL: 'https://www.gnu.org/software/freefont/license.html' path: 'FreeFont/freefont-20120503/FreeSerifBold.ttf' noto: name: 'Noto Fonts' URL: 'https://www.google.com/get/noto/' author: 'Google Inc.' license: 'SIL OFL 1.1' licenseURL: 'http://scripts.sil.org/ofl' noto-hebrew: path: 'Noto/NotoSansHebrew-Regular.ttf' noto-arabic: path: 'Noto/NotoNaskhArabic-Regular.ttf' noto-syriac: path: 'Noto/NotoSansSyriacEastern-Regular.ttf' noto-nko: path: 'Noto/NotoSansNKo-Regular.ttf' noto-samaritan: path: 'Noto/NotoSansSamaritan-Regular.ttf' noto-mandaic: path: 'Noto/NotoSansMandaic-Regular.ttf' noto-bengali: path: 'Noto/NotoSerifBengali-Regular.ttf' noto-gujarati: path: 'Noto/NotoSerifGujarati-Regular.ttf' noto-tamil: path: 'Noto/NotoSerifTamil-Regular.ttf' noto-telugu: path: 'Noto/NotoSerifTelugu-Regular.ttf' noto-kannada: path: 'Noto/NotoSerifKannada-Regular.ttf' noto-malayalam: path: 'Noto/NotoSerifMalayalam-Regular.ttf' noto-lao: path: 'Noto/NotoSerifLao-Regular.ttf' noto-tibetan: path: 'Noto/NotoSansTibetan-Regular.ttf' noto-georgian: path: 'Noto/NotoSerifGeorgian-Regular.ttf' noto-cherokee: path: 'NotoSansCherokee/NotoSansCherokee-Regular.ttf' noto-canadian-aboriginal: path: 'Noto/NotoSansCanadianAboriginal-Regular.ttf' noto-ogham: path: 'Noto/NotoSansOgham-Regular.ttf' noto-runic: path: 'Noto/NotoSansRunic-Regular.ttf' noto-tagalog: path: 'Noto/NotoSansTagalog-Regular.ttf' noto-tagbanwa: path: 'Noto/NotoSansTagbanwa-Regular.ttf' noto-khmer: path: 'Noto/NotoSerifKhmer-Regular.ttf' noto-tai-tham: path: 'Noto/NotoSansTaiTham-Regular.ttf' noto-balinese: path: 'Noto/NotoSansBalinese-Regular.ttf' noto-sundanese: path: 'Noto/NotoSansSundanese-Regular.ttf' noto-batak: path: 'Noto/NotoSansBatak-Regular.ttf' noto-ol-chiki: path: 'Noto/NotoSansOlChiki-Regular.ttf' noto-devanagari: path: 'Noto/NotoSerifDevanagari-Regular.ttf' noto-serif: path: 'Noto/NotoSerif-Regular.ttf' noto-tifinagh: path: 'Noto/NotoSansTifinagh-Regular.ttf' noto-yi: path: 'Noto/NotoSansYi-Regular.ttf' noto-bamum: path: 'Noto/NotoSansBamum-Regular.ttf' noto-syloti-nagri: path: 'Noto/NotoSansSylotiNagri-Regular.ttf' noto-kayah-li: path: 'Noto/NotoSansKayahLi-Regular.ttf' noto-rejang: path: 'Noto/NotoSansRejang-Regular.ttf' noto-javanese: path: 'Noto/NotoSansJavanese-Regular.ttf' noto-cham: path: 'Noto/NotoSansCham-Regular.ttf' noto-meetei-mayek: path: 'Noto/NotoSansMeeteiMayek-Regular.ttf' noto-cjk-jp: path: 'Noto/NotoSansCJKjp-Light.otf' noto-serif-jp: path: 'NotoSerifCJKjp/NotoSerifCJKjp-Regular.otf' scheherazade: name: 'Scheherazade 2.100' URL: 'http://software.sil.org/scheherazade/' author: 'SIL International' license: 'SIL OFL 1.1' licenseURL: 'http://scripts.sil.org/ofl' path: 'Scheherazade/Scheherazade-2.100/Scheherazade-Regular.ttf' scheherazade-bold: path: 'Scheherazade/Scheherazade-2.100/Scheherazade-Bold.ttf' annapurna: name: 'Annapurna SIL 1.202' URL: 'http://software.sil.org/annapurna/' author: 'SIL International' license: 'SIL OFL 1.1' licenseURL: 'http://scripts.sil.org/ofl' path: 'Annapurna/AnnapurnaSIL-1.202/AnnapurnaSIL-Regular.ttf' manjari: name: 'Manjari' URL: 'https://github.com/santhoshtr/Manjari' author: 'Santhosh Thottingal, Kavya Manohar' license: 'SIL OFL 1.1' licenseURL: 'http://scripts.sil.org/ofl' path: 'Manjari/Manjari-Regular.ttf' norasi: name: 'Norasi' URL: 'https://linux.thai.net/projects/fonts-tlwg' author: 'The National Font Project (v.beta), Yannis Haralambous, Virach Sornlertlamvanich, and Anutara Tantraporn, with modification by Thai Linux Working Group (TLWG)' license: 'GPLv2+FE' licenseURL: 'https://github.com/tlwg/fonts-tlwg/blob/master/COPYING' path: 'tlwg/ttf-tlwg-0.5.0/Norasi.ttf' jomolhari: name: 'Jomolhari 000.003c' URL: 'https://collab.itc.virginia.edu/wiki/tibetan-script/Jomolhari.html' author: 'THL Staff' license: 'SIL OFL 1.1' licenseURL: 'http://scripts.sil.org/ofl' path: 'Jomolhari/Jomolhari-alpha3c-0605331.ttf' padauk: name: 'Padauk 3.002' URL: 'http://software.sil.org/padauk/' author: 'SIL International' license: 'SIL OFL 1.1' licenseURL: 'http://scripts.sil.org/ofl' path: 'Padauk/padauk-3.002/PadaukBook-Regular.ttf' quivira: name: 'Quivira 4.1' URL: 'http://www.quivira-font.com/' author: 'Alexander Lange' license: 'Permissive License' licenseURL: 'http://www.quivira-font.com/notes.php' path: 'Quivira/Quivira.otf' unbatang: name: 'UnBatang' URL: 'https://kldp.net/unfonts/' author: 'Koanughi Un, Won-kyu Park, and Jungshik Shin' license: 'GPLv2' licenseURL: 'http://www.gnu.org/licenses/gpl.txt' path: 'UnFonts/un-fonts/UnBatang.ttf' abyssinica: name: 'Abyssinica SIL 1.500' URL: 'http://software.sil.org/abyssinica/' author: 'SIL International' license: 'SIL OFL 1.1' licenseURL: 'http://scripts.sil.org/ofl' path: 'Abyssinica/AbyssinicaSIL-1.500/AbyssinicaSIL-R.ttf' hancom: name: 'HCRBatang' URL: 'http://www.hancom.com/cs_center/csDownload.do' author: 'Hancom INC(HNC)' license: 'Permissive License' licenseURL: 'http://www.hancom.com/cs_center/csDownload.do' path: 'Hancom/HANBatang.ttf' mongolian-script: name: 'MongolianScript' URL: 'http://mongol.openmn.org/' author: 'Myataviin Erdenechimeg and Bolorsoft LLC' license: 'SIL OFL 1.1' licenseURL: 'http://scripts.sil.org/ofl' path: 'MongolianScript/fonts/MongolianScript.ttf' namdhinggo: name: 'Namdhinggo SIL 1.004' URL: 'http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=NamdhinggoSIL' author: 'SIL International' license: 'SIL OFL 1.1' licenseURL: 'http://scripts.sil.org/ofl' path: 'Namdhinggo/NamdhinggoSIL/NamdhinggoSIL-R.ttf' dai-banna: name: 'Dai Banna SIL 2.200' URL: 'http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=daibannasil' author: 'SIL International' license: 'SIL OFL 1.1' licenseURL: 'http://scripts.sil.org/ofl' path: 'DaiBanna/dai-banna-2.200/DBSILBR.ttf' nishiki: name: 'Nishiki-teki Font' URL: 'https://umihotaru.work/' author: 'Umihotaru' license: 'Permissive License' licenseURL: 'https://umihotaru.work/faq.txt' path: 'Nishiki/nishiki-teki.ttf' mingzat: name: 'Mingzat 0.100' URL: 'http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=Mingzat' author: 'SIL International' license: 'SIL OFL 1.1' licenseURL: 'http://scripts.sil.org/ofl' path: 'Mingzat/Mingzat/Mingzat-R.ttf' ponomar: name: 'Ponomar Unicode' URL: 'http://www.ponomar.net/cu_support/fonts.html' author: 'Vlad Dorosh, Aleksandr Andreev, Yuri Shardt, and Nikita Simmons' license: 'SIL OFL 1.1' licenseURL: 'http://scripts.sil.org/ofl' path: 'PonomarUnicode/PonomarUnicode.otf' junicode: name: 'Junicode' URL: 'http://junicode.sourceforge.net/' author: 'Peter S. Baker' license: 'SIL OFL 1.1' licenseURL: 'http://scripts.sil.org/ofl' path: 'junicode/junicode/fonts/Junicode.ttf' btc: name: 'BTC.ttf' URL: 'https://en.bitcoin.it/wiki/Template:BTC' author: 'theymos' license: 'Public domain' licenseURL: '' path: 'BTC/BTC.ttf' observer-symbol: name: 'ObserverSymbol' URL: 'https://www.simongriffee.com/notebook/international-symbol-observer/' author: 'Simon Griffee' license: 'CC0 1.0 Universal' licenseURL: 'https://creativecommons.org/publicdomain/zero/1.0/' path: 'ObserverSymbol/ObserverSymbol.ttf' analecta: name: 'Analecta' URL: 'http://users.teilar.gr/~g1951d/' author: 'George Douros' license: 'Permissive License' licenseURL: 'http://users.teilar.gr/~g1951d/' path: 'Analecta/Analecta.otf' babel-stone: name: 'BabelStone Han' URL: 'http://www.babelstone.co.uk/Fonts/Han.html' author: 'Arphic Technology Co., Ltd.' license: 'Arphic Public License' licenseURL: 'http://ftp.gnu.org/non-gnu/chinese-fonts-truetype/LICENSE' path: 'BabelStoneHan/BabelStoneHan.ttf' open-sans: name: 'Open Sans' URL: 'http://www.opensans.com/' author: 'Steve Matteson and Google Corporation' license: 'Apache License v2' licenseURL: 'http://www.apache.org/licenses/LICENSE-2.0' path: 'OpenSans/OpenSans-Bold.ttf' dejavu: name: 'DejaVu Serif' URL: 'https://dejavu-fonts.github.io/' author: 'Bitstream' license: 'Free License' licenseURL: 'https://dejavu-fonts.github.io/License.html' path: 'DejaVu/dejavu-fonts-ttf-2.37/ttf/DejaVuSerif.ttf' jglao: name: 'JG Lao Times' URL: 'https://web.archive.org/web/20090729181203/http://geocities.com/jglavy/asian.html' author: 'GlavyFonts' license: 'Permissive License' licenseURL: 'https://web.archive.org/web/20090729181203/http://geocities.com/jglavy/asian.html' path: 'JGLao/JG LaoTimesOT.ttf' lisu: name: 'LisuUnicode' URL: 'http://phjamr.github.io/lisu.html' author: 'phjamr' license: 'SIL OFL 1.1' licenseURL: 'https://github.com/phjamr/LisuUnicode/blob/master/LICENSE.md' path: 'LisuUnicode/LisuUnicode-Regular.ttf' wakor: name: 'Wakor' URL: 'http://www.evertype.com/fonts/vai/' author: 'Jason Glavy' license: 'SIL OFL 1.1' licenseURL: 'http://www.evertype.com/fonts/vai/wakor-licence.html' path: 'Wakor/Wakor-4.0.7/Wakor.ttf' charis: name: 'Charis' URL: 'https://software.sil.org/charis/' author: 'SIL' license: 'SIL OFL 1.1' licenseURL: 'http://scripts.sil.org/ofl' path: 'Charis/CharisSIL-5.000/CharisSIL-R.ttf' babel-phags-pa: name: 'BabelStone Phags-pa Book' URL: 'http://www.babelstone.co.uk/Fonts/Phags-pa.html' author: 'Arphic Technology Co., Ltd.' license: 'SIL OFL 1.1' licenseURL: 'http://scripts.sil.org/ofl' path: 'BabelStonePhagsPa/BabelStonePhagspaBook_v2.ttf' pagul: name: 'PagulFont' URL: 'https://sourceforge.net/projects/pagul/' author: 'mooreprabu' license: 'GPLv3+FE' licenseURL: 'https://www.gnu.org/software/freefont/license.html' path: 'Pagul/Pagul.ttf' tai-heritage: name: 'Tai Heritage Pro' URL: 'https://software.sil.org/taiheritage/' author: 'SIL' license: 'SIL OFL 1.1' licenseURL: 'http://scripts.sil.org/ofl' path: 'TaiHeritage/TaiHeritagePro-2.600/TaiHeritagePro-Regular.ttf' load-fonts = -> Promise.all do for let name, {path: short-path} of font-data if short-path is undefined Promise.resolve {} else new Promise (resolve, reject) -> full-path = path.join __dirname, \../fonts, short-path opentype.load full-path, (error, font) -> if error then reject error else resolve "#name": font .then (fonts) -> new Promise (resolve, reject) -> log 'All fonts loaded.' resolve Object.assign {}, ...fonts load-glyphs = -> fs.readdir path.join __dirname, \../data/glyphs .then (files) -> Promise.all do for let file in files when path.extname(file) is '.svg' fs.read-file path.join __dirname, \../data/glyphs, file .then (glyph) -> "#{camel-case path.basename file, '.svg'}": glyph .then (glyphs) -> log 'All glyphs loaded.' Object.assign {}, ...glyphs module.exports = (codepoint-infos, config) -> [fonts, custom-glyphs] <- Promise.all [ load-fonts! load-glyphs! ] .then resolve, reject <- new Promise _ error, window <- jsdom.env '' [require.resolve 'snapsvg'] return reject error if error {Snap, document} = window hilbert = new Hilbert2d 256 block-size = 30 paper = Snap 128 * block-size, 128 * block-size path-string = '' progress = new Progress 'Generating... [:bar] :current glyphs :elapseds' do incomplete: ' ' width: 40 total: 128 * 128 anchors = paper.group! glyphs = paper.group! defined-characters = 0 early-mapped-characters = 0 start-xy = hilbert.xy config.codepoint for code-point from config.codepoint til config.codepoint + 128 * 128 {x, y} = hilbert.xy code-point x -= start-xy.x y -= start-xy.y codepoint-info = codepoint-infos.get code-point continue unless codepoint-info? glyph-infos = for let name, font of fonts {name, font, glyph: font.char-to-glyph String.from-code-point(codepoint-info?.codepoint or code-point)} unless codepoint-info.type is \notdef defined-characters++ if codepoint-info.early is true early-mapped-characters++ if codepoint-info?.type is \notdef notdef-group = paper.group! # Draw box notdef = Snap.parse custom-glyphs.notdef for child in Array::slice.call notdef.node.children, 0 notdef-group.append child notdef-group.attr transform: "translate(#{x * block-size} #{y * block-size}) scale(#{block-size / 2048})" glyphs.append notdef-group else if codepoint-info?.type is \tofu tofu-group = paper.group! # Draw box tofu = Snap.parse custom-glyphs.tofu for child in Array::slice.call tofu.node.children, 0 tofu-group.append child tofu-group.attr transform: "translate(#{x * block-size} #{y * block-size}) scale(#{block-size / 2048})" glyphs.append tofu-group else if codepoint-info?.type is \control control-box-group = paper.group! # Draw box control-box = Snap.parse custom-glyphs.control-box for child in Array::slice.call control-box.node.children, 0 control-box-group.append child # Draw text text-font = fonts.open-sans text-size = 768 lines = codepoint-info.short-name.split '\\n' for line, line-index in lines text-path = text-font.get-path line, 1024, 1024, text-size .to-path-data! text = paper.path text-path text-width = text-font.string-to-glyphs line .reduce do * (a, b) -> a + b.advance-width / text-font.units-per-em * text-size * 0 text.attr transform: "translate(#{- text-width / 2} #{(line-index - lines.length / 2 + 0.85) * text-size})" control-box-group.append text control-box-group.attr transform: "translate(#{x * block-size} #{y * block-size}) scale(#{block-size / 2048})" glyphs.append control-box-group else if codepoint-info?.type is \svg svg-font-group = paper.group! svg-group = paper.group! glyph-svg = Snap.parse custom-glyphs["u#{to-hex code-point}"] for child in Array::slice.call glyph-svg.node.children, 0 svg-group.append child # Transform transform = Snap.matrix 1, 0, 0, 1, 0, 0 transform.translate x * block-size, y * block-size if codepoint-info?.transform transform.scale block-size transform.translate 0.5, 0.5 transform.add Snap._.transform2matrix Snap._.svg-transform2string codepoint-info?.transform transform.translate -0.5, -0.5 transform.scale 1 / block-size transform.scale block-size / 1024 svg-group.transform transform svg-font-group.append svg-group if codepoint-info?.box box-group = paper.group! box = Snap.parse custom-glyphs.control-box for child in Array::slice.call box.node.children, 0 box-group.append child box-group.transform "translate(#{x * block-size} #{y * block-size}) scale(#{block-size / 2048})" svg-font-group.append box-group if codepoint-info?.combining combining-circle-group = paper.group! combining-circle = Snap.parse custom-glyphs.combining-circle for child in Array::slice.call combining-circle.node.children, 0 combining-circle-group.append child combining-circle-group.transform "translate(#{x * block-size} #{y * block-size}) scale(#{block-size / 1024})" svg-font-group.append combining-circle-group glyphs.append svg-font-group else glyph-info = if codepoint-info?.type is \font if codepoint-info.font-name.length is 1 glyph-infos.find (.name is camel-case codepoint-info.font-name) else font-names = codepoint-info.font-name.map camel-case font-name = font-names.find ((name) -> glyph-infos.some (-> it.name is name and it.glyph.unicode isnt undefined)) glyph-infos.find (-> it.name is font-name) else if process.env.DEBUG is \true glyph-infos.find (.glyph.unicode isnt undefined) else undefined if glyph-info isnt undefined font-group = paper.group! width = glyph-info.glyph.advance-width / glyph-info.font.units-per-em * block-size glyph-path = glyph-info.glyph.get-path (block-size - width) / 2, 25, block-size .to-path-data! path = paper.path glyph-path font-count-name = if glyph-info.name.starts-with 'noto' 'noto' else if glyph-info.name.starts-with 'scheherazade' 'scheherazade' else glyph-info.name unless font-counts.has font-count-name font-counts.set font-count-name, 0 font-counts.set font-count-name, 1 + font-counts.get font-count-name # Transform transform = Snap.matrix 1, 0, 0, 1, 0, 0 # SVG Transform operation occurs by last-in-first-out order # http://stackoverflow.com/q/27635272 transform.translate x * block-size, y * block-size if codepoint-info?.transform transform.scale block-size transform.translate 0.5, 0.5 transform.add Snap._.transform2matrix Snap._.svg-transform2string codepoint-info?.transform transform.translate -0.5, -0.5 transform.scale 1 / block-size path.transform transform font-group.append path if codepoint-info?.combining combining-circle-group = paper.group! combining-circle = Snap.parse custom-glyphs.combining-circle for child in Array::slice.call combining-circle.node.children, 0 combining-circle-group.append child combining-circle-group.transform "translate(#{x * block-size} #{y * block-size}) scale(#{block-size / 1024})" font-group.append combining-circle-group if codepoint-info?.box box-group = paper.group! box = Snap.parse custom-glyphs.control-box for child in Array::slice.call box.node.children, 0 box-group.append child box-group.transform "translate(#{x * block-size} #{y * block-size}) scale(#{block-size / 2048})" font-group.append box-group glyphs.append font-group if codepoint-info?.type isnt undefined temp-anchors = [] anchor-group = paper.group! anchor-size = 2 if x isnt 0x7F right-anchor1 = paper.line block-size, 0, block-size, anchor-size anchor-group.append right-anchor1 right-anchor2 = paper.line block-size, block-size - anchor-size, block-size, block-size anchor-group.append right-anchor2 if y isnt 0x7F bottom-anchor1 = paper.line 0, block-size, anchor-size, block-size anchor-group.append bottom-anchor1 bottom-anchor2 = paper.line block-size - anchor-size, block-size, block-size, block-size anchor-group.append bottom-anchor2 if x % 16 is 0 and x isnt 0 and y % 16 is 0 and y isnt 0 big-anchor = paper.rect -anchor-size, -anchor-size, anchor-size * 2, anchor-size * 2 big-anchor.transform 'rotate(45deg)' anchor-group.append big-anchor anchor-group.transform "translate(#{x * block-size} #{y * block-size})" anchors.append anchor-group if path-string.length is 0 path-string += "M #{(x + 0.5) * block-size} #{(y + 0.5) * block-size} " else path-string += "L #{(x + 0.5) * block-size} #{(y + 0.5) * block-size} " progress.tick 128 if (code-point + 1) % 128 is 0 anchors.attr do stroke-width: '0.5px' stroke: 'black' path = paper.path path-string path.attr do fill: 'none' stroke: 'black' stroke-opacity: 0.3 stroke-width: 0.5 path.prepend-to paper paper.node.set-attribute 'viewBox', '0 0 3840 3840' paper.node.set-attribute 'width', 7680 paper.node.set-attribute 'height', 7680 font-counts-list = Array.from font-counts font-counts-list.sort (a, b) -> b.1 - a.1 font-license-text = font-counts-list.map ([font-name, font-count]) -> font = font-data[font-name] "#{font.name} by #{font.author} licensed under #{font.license}" .join '\n' font-count-text = font-counts-list.map ([font-name, font-count]) -> font = font-data[font-name] "#{font.name}: #{font-count}" .join '\n' console.log """ ====== License notation ====== #{font-license-text} """ console.log """ ====== Glyph count ====== #{font-count-text} """ console.log """ ====== Statistics ====== """ console.log "Defined Characters: #{defined-characters}" console.log "Early Mapped Characters: #{early-mapped-characters}" log 'Rendering SVG...' svg = xmlserializer.serialize-to-string paper.node window.close! resolve svg ================================================ FILE: lib/load-codepoints.ls ================================================ require! { path 'mz/fs' 'yaml-js' './util': {log, now, merge-maps} './codepoint-builder' } module.exports = -> now -> fs.readdir 'data/codepoints' .then (files) -> yaml-files = files.filter -> it.slice -4 is '.yml' Promise.all yaml-files.map (yaml-file) -> fs.read-file path.resolve 'data/codepoints' yaml-file .then (yaml) -> object = yaml-js.load yaml codepoint-builder object .then (codepoint-maps) -> merge-maps codepoint-maps ================================================ FILE: lib/util.ls ================================================ export log = (text) -> date = new Date! date-string = date.to-ISO-string! memory = process.memory-usage!rss / (1024 * 1024) |> Math.floor console.log "[#date-string (Memory: #{memory}MiB)] #text" export merge-maps = (maps) -> flattened-maps = maps.map (-> Array.from it) .reduce ((a, b) -> a ++ b), [] new Map flattened-maps # Just executes specified function and returns result. # Used to beautify indentation in promise chains export now = -> it! export to-hex = (codepoint) -> if codepoint < 0x10000 ('0000' + codepoint.to-string 16).slice -4 else codepoint.to-string 16 ================================================ FILE: package.json ================================================ { "name": "unicode-map", "version": "1.0.0", "description": "", "private": true, "scripts": { "build": "node --max-old-space-size=4096 node_modules/livescript/bin/lsc index.ls", "watch": "concurrently \"npm run chokidar\" \"npm run livereload\"", "chokidar": "chokidar \"data/**/*.yml\" \"lib/*.ls\" -c \"lsc index.ls\"", "livereload": "livereload \"test.svg\" -d", "test": "mocha --compilers ls:livescript test/index.ls" }, "repository": { "type": "git", "url": "git+https://github.com/hakatashi/unicode-map.git" }, "keywords": [], "author": "Koki Takahashi (http://hakatashi.com/)", "license": "MIT", "bugs": { "url": "https://github.com/hakatashi/unicode-map/issues" }, "homepage": "https://github.com/hakatashi/unicode-map#readme", "dependencies": { "anymatch": "^1.3.2", "bluebird": "^3.5.1", "camel-case": "^3.0.0", "chai": "^3.5.0", "chokidar": "^1.7.0", "chokidar-cli": "^1.2.0", "concurrently": "^3.5.0", "download": "^5.0.3", "file-url": "^2.0.2", "hilbert": "^2.0.0", "jsdom": "^9.12.0", "livereload": "^0.6.3", "livescript": "^1.5.0", "mkdirp-then": "^1.2.0", "mocha": "^3.5.3", "mz": "^2.7.0", "nightmare": "^2.10.0", "no-case": "^2.3.2", "opentype.js": "^0.7.3", "optionator": "^0.8.2", "progress": "^1.1.8", "snapsvg": "^0.5.1", "svg2png": "^4.1.1", "xmlserializer": "^0.6.0", "yaml-js": "^0.1.5" } } ================================================ FILE: test/codepoint-builder.ls ================================================ require! { './expect' '../lib/codepoint-builder' } {describe: Describe, it: It} = global assets = * * 'extracts hex key and convert it to number' * F1B1: font: \testfont * 0xF1B1: type: \font font-name: <[testfont]> codepoint: undefined * * 'recognizes codepoints over U+FFFF' * D109A: font: \testfont * 0xD109A: type: \font font-name: <[testfont]> codepoint: undefined * * 'extracts code point range to the series of keys' * '0150..0153': font: \testfont * 0x0150: type: \font font-name: <[testfont]> codepoint: undefined 0x0151: type: \font font-name: <[testfont]> codepoint: undefined 0x0152: type: \font font-name: <[testfont]> codepoint: undefined 0x0153: type: \font font-name: <[testfont]> codepoint: undefined * * 'accepts additional parameters' * '535A': font: \testfont codepoint: undefined scale: 0.5 * 0x535A: type: \font font-name: <[testfont]> codepoint: undefined scale: 0.5 * * 'supports nested notation' * '535A..535F': font: \font1 '535B': font: \font2 '535D..535E': font: \font3 * 0x535A: type: \font font-name: <[font1]> codepoint: undefined 0x535B: type: \font font-name: <[font2]> codepoint: undefined 0x535C: type: \font font-name: <[font1]> codepoint: undefined 0x535D: type: \font font-name: <[font3]> codepoint: undefined 0x535E: type: \font font-name: <[font3]> codepoint: undefined 0x535F: type: \font font-name: <[font1]> codepoint: undefined * * 'recognizes glyphs of type control' * '0102': control: \NUL * 0x0102: type: \control short-name: \NUL * * 'splats array of short-names into each characters' * '535A..535C': control: <[NUL SP CR]> * 0x535A: type: \control short-name: \NUL 0x535B: type: \control short-name: \SP 0x535C: type: \control short-name: \CR * * 'splats lines of short-names into each characters' * '535A..535C': control: ''' NUL SP CR ''' * 0x535A: type: \control short-name: \NUL 0x535B: type: \control short-name: \SP 0x535C: type: \control short-name: \CR * * 'recognizes glyphs of type svg' * '0102': svg: true * 0x0102: type: \svg * * 'recognizes glyphs of type notdef' * '0102': 'notdef' * 0x0102: type: \notdef <- Describe 'Code Point Builder' for let asset in assets It asset.0, -> expect codepoint-builder asset.1 .to.be.map asset.2 ================================================ FILE: test/expect.ls ================================================ require! { chai } map-to-obj = (map) -> obj = Object.create null for [key, value] in Array.from map.entries! obj[key] = value obj chai.use ({Assertion}, util) -> Assertion.add-method 'map' (expected) -> new Assertion @_obj .to.be.instanceof Map actual-obj = map-to-obj @_obj expected-obj = if expected instanceof Map map-to-obj expected else expected new Assertion actual-obj .to.deep.equal expected-obj module.exports = chai.expect ================================================ FILE: test/index.ls ================================================ require! { './codepoint-builder' }