Static TTF fonts (IBM Plex Sans/Mono, Noto Devanagari/Kannada) with a fontkit-generated manifest, a verifier and OFL licences. Every family registers a normal and italic source so fallback stacks cannot throw. Adds A4/Letter geometry with margin presets, an exact column allocator, deterministic Indian-grouping money and date formatting, text sanitising and a pure buildRenderModel.
233 lines
6.4 KiB
JSON
233 lines
6.4 KiB
JSON
{
|
|
"version": 1,
|
|
"families": [
|
|
{
|
|
"family": "IBM Plex Mono",
|
|
"folder": "ibm-plex-mono",
|
|
"license": "OFL-1.1",
|
|
"licenseFile": "OFL.txt",
|
|
"fonts": [
|
|
{
|
|
"file": "IBMPlexMono-Italic.ttf",
|
|
"weight": 400,
|
|
"style": "italic",
|
|
"sha256": "8ebe04c8c6cc82f0be19896ddc61d9935cdd0f027b0173c1945b8d247d7dfc2a",
|
|
"fsType": 0,
|
|
"upm": 1000,
|
|
"ascent": 1025,
|
|
"descent": -275,
|
|
"lineGap": 0,
|
|
"capHeight": 698,
|
|
"xHeight": 516,
|
|
"hasRupee": true,
|
|
"hasTabularNums": false
|
|
},
|
|
{
|
|
"file": "IBMPlexMono-Regular.ttf",
|
|
"weight": 400,
|
|
"style": "normal",
|
|
"sha256": "fe11304a5fe956d5744e9b6a246cc83d90425245e75a62230044966ca96a7f50",
|
|
"fsType": 0,
|
|
"upm": 1000,
|
|
"ascent": 1025,
|
|
"descent": -275,
|
|
"lineGap": 0,
|
|
"capHeight": 698,
|
|
"xHeight": 516,
|
|
"hasRupee": true,
|
|
"hasTabularNums": false
|
|
},
|
|
{
|
|
"file": "IBMPlexMono-SemiBold.ttf",
|
|
"weight": 600,
|
|
"style": "normal",
|
|
"sha256": "c9417148ce13f8fa7d2d5c9180bbc141f72aa0d814ffeb280f6904dc2b1bbd7a",
|
|
"fsType": 0,
|
|
"upm": 1000,
|
|
"ascent": 1025,
|
|
"descent": -275,
|
|
"lineGap": 0,
|
|
"capHeight": 698,
|
|
"xHeight": 516,
|
|
"hasRupee": true,
|
|
"hasTabularNums": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"family": "IBM Plex Sans",
|
|
"folder": "ibm-plex-sans",
|
|
"license": "OFL-1.1",
|
|
"licenseFile": "OFL.txt",
|
|
"fonts": [
|
|
{
|
|
"file": "IBMPlexSans-Light.ttf",
|
|
"weight": 300,
|
|
"style": "normal",
|
|
"sha256": "2218b5f3f1fc9d3a793343f45c3be5ee7eae9584a7a52391bb8cf2d37622b3e0",
|
|
"fsType": 0,
|
|
"upm": 1000,
|
|
"ascent": 1025,
|
|
"descent": -275,
|
|
"lineGap": 0,
|
|
"capHeight": 698,
|
|
"xHeight": 512,
|
|
"hasRupee": true,
|
|
"hasTabularNums": false
|
|
},
|
|
{
|
|
"file": "IBMPlexSans-Italic.ttf",
|
|
"weight": 400,
|
|
"style": "italic",
|
|
"sha256": "a9c6ef9942c49e49d11e11a6dacc0b3a087978757e9b22a06b8ac22a6400fb15",
|
|
"fsType": 0,
|
|
"upm": 1000,
|
|
"ascent": 1025,
|
|
"descent": -275,
|
|
"lineGap": 0,
|
|
"capHeight": 698,
|
|
"xHeight": 516,
|
|
"hasRupee": true,
|
|
"hasTabularNums": false
|
|
},
|
|
{
|
|
"file": "IBMPlexSans-Regular.ttf",
|
|
"weight": 400,
|
|
"style": "normal",
|
|
"sha256": "975dcda37d80f038dcd143c22e33ca2d97a0cc5a929aace1c749153b0fe1afa5",
|
|
"fsType": 0,
|
|
"upm": 1000,
|
|
"ascent": 1025,
|
|
"descent": -275,
|
|
"lineGap": 0,
|
|
"capHeight": 698,
|
|
"xHeight": 516,
|
|
"hasRupee": true,
|
|
"hasTabularNums": false
|
|
},
|
|
{
|
|
"file": "IBMPlexSans-Medium.ttf",
|
|
"weight": 500,
|
|
"style": "normal",
|
|
"sha256": "331c8639d7598b2cde62a911a71db195e30cb655cd6bdf2e324a7e984955f907",
|
|
"fsType": 0,
|
|
"upm": 1000,
|
|
"ascent": 1025,
|
|
"descent": -275,
|
|
"lineGap": 0,
|
|
"capHeight": 698,
|
|
"xHeight": 520,
|
|
"hasRupee": true,
|
|
"hasTabularNums": false
|
|
},
|
|
{
|
|
"file": "IBMPlexSans-SemiBold.ttf",
|
|
"weight": 600,
|
|
"style": "normal",
|
|
"sha256": "a20caf8286023a6a7a85e40b1d2a4ae9fc3e3b1f9eda8f4c542dd4986af67bb1",
|
|
"fsType": 0,
|
|
"upm": 1000,
|
|
"ascent": 1025,
|
|
"descent": -275,
|
|
"lineGap": 0,
|
|
"capHeight": 698,
|
|
"xHeight": 522,
|
|
"hasRupee": true,
|
|
"hasTabularNums": false
|
|
},
|
|
{
|
|
"file": "IBMPlexSans-Bold.ttf",
|
|
"weight": 700,
|
|
"style": "normal",
|
|
"sha256": "9e6c74a889a700d707613d24548fe4ffa6bc59559a0689d2cf9e133bdcdafb2f",
|
|
"fsType": 0,
|
|
"upm": 1000,
|
|
"ascent": 1025,
|
|
"descent": -275,
|
|
"lineGap": 0,
|
|
"capHeight": 698,
|
|
"xHeight": 525,
|
|
"hasRupee": true,
|
|
"hasTabularNums": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"family": "Noto Sans Devanagari",
|
|
"folder": "noto-sans-devanagari",
|
|
"license": "OFL-1.1",
|
|
"licenseFile": "OFL.txt",
|
|
"fonts": [
|
|
{
|
|
"file": "NotoSansDevanagari-Regular.ttf",
|
|
"weight": 400,
|
|
"style": "normal",
|
|
"sha256": "306b53ecfb182a504dd8a7446093c316387d2fd8dc350d0792ed1753fe0996cd",
|
|
"fsType": 0,
|
|
"upm": 1000,
|
|
"ascent": 896,
|
|
"descent": -408,
|
|
"lineGap": 0,
|
|
"capHeight": 622,
|
|
"xHeight": 536,
|
|
"hasRupee": true,
|
|
"hasTabularNums": false
|
|
},
|
|
{
|
|
"file": "NotoSansDevanagari-Bold.ttf",
|
|
"weight": 700,
|
|
"style": "normal",
|
|
"sha256": "3ad8362a06271814869838dcc3d161b13c9fb97681b627af1f7f283ea9387d56",
|
|
"fsType": 0,
|
|
"upm": 1000,
|
|
"ascent": 896,
|
|
"descent": -408,
|
|
"lineGap": 0,
|
|
"capHeight": 622,
|
|
"xHeight": 536,
|
|
"hasRupee": true,
|
|
"hasTabularNums": false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"family": "Noto Sans Kannada",
|
|
"folder": "noto-sans-kannada",
|
|
"license": "OFL-1.1",
|
|
"licenseFile": "OFL.txt",
|
|
"fonts": [
|
|
{
|
|
"file": "NotoSansKannada-Regular.ttf",
|
|
"weight": 400,
|
|
"style": "normal",
|
|
"sha256": "9ad74dc64838c6855b96f671fc08e425a58921b9d0c71712ea79c328a27e6e38",
|
|
"fsType": 0,
|
|
"upm": 1000,
|
|
"ascent": 809,
|
|
"descent": -540,
|
|
"lineGap": 0,
|
|
"capHeight": 690,
|
|
"xHeight": 551,
|
|
"hasRupee": true,
|
|
"hasTabularNums": false
|
|
},
|
|
{
|
|
"file": "NotoSansKannada-Bold.ttf",
|
|
"weight": 700,
|
|
"style": "normal",
|
|
"sha256": "3db1507b3f856185fc7c00dc0addfd4797a8ea6955b86d1d21fa659cc9d5e849",
|
|
"fsType": 0,
|
|
"upm": 1000,
|
|
"ascent": 809,
|
|
"descent": -540,
|
|
"lineGap": 0,
|
|
"capHeight": 690,
|
|
"xHeight": 552,
|
|
"hasRupee": true,
|
|
"hasTabularNums": false
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|