Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 88 additions & 15 deletions docs/demo.e800fe03.js → docs/demo.dcf871bd.js
Original file line number Diff line number Diff line change
Expand Up @@ -46604,8 +46604,20 @@
8: $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_EXTRAEXPANDED,
9: $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_ULTRAEXPANDED
};
const $c8c163c85a2fe4122f49de2a1cd9c12c$var$Css3StretchToFcWidth = {
'ultra-condensed': $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_ULTRACONDENSED,
'extra-condensed': $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_EXTRACONDENSED,
'condensed': $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_CONDENSED,
'semi-condensed': $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_SEMICONDENSED,
'normal': $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_NORMAL,
'semi-expanded': $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_SEMIEXPANDED,
'expanded': $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_EXPANDED,
'extra-expanded': $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_EXTRAEXPANDED,
'ultra-expanded': $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_ULTRAEXPANDED
};

if (typeof TextEncoder === 'undefined') {
//nodejs
const {
TextEncoder,
TextDecoder
Expand Down Expand Up @@ -46640,8 +46652,7 @@
if ($c8c163c85a2fe4122f49de2a1cd9c12c$var$strContainsIgnoreCase(s, 'bold')) return $eefa2b8b831d14eeeb495d913889d53$exports.FC_WEIGHT_BOLD;
if ($c8c163c85a2fe4122f49de2a1cd9c12c$var$strContainsIgnoreCase(s, 'ultrablack')) return $eefa2b8b831d14eeeb495d913889d53$exports.FC_WEIGHT_EXTRABLACK;
if ($c8c163c85a2fe4122f49de2a1cd9c12c$var$strContainsIgnoreCase(s, 'superblack')) return $eefa2b8b831d14eeeb495d913889d53$exports.FC_WEIGHT_EXTRABLACK;
if ($c8c163c85a2fe4122f49de2a1cd9c12c$var$strContainsIgnoreCase(s, 'extrablack')) return $eefa2b8b831d14eeeb495d913889d53$exports.FC_WEIGHT_EXTRABLACK; // TODO ultra?

if ($c8c163c85a2fe4122f49de2a1cd9c12c$var$strContainsIgnoreCase(s, 'extrablack')) return $eefa2b8b831d14eeeb495d913889d53$exports.FC_WEIGHT_EXTRABLACK;
if ($c8c163c85a2fe4122f49de2a1cd9c12c$var$strContainsIgnoreCase(s, 'black')) return $eefa2b8b831d14eeeb495d913889d53$exports.FC_WEIGHT_BLACK;
if ($c8c163c85a2fe4122f49de2a1cd9c12c$var$strContainsIgnoreCase(s, 'heavy')) return $eefa2b8b831d14eeeb495d913889d53$exports.FC_WEIGHT_HEAVY;
return -1;
Expand All @@ -46658,8 +46669,7 @@
if ($c8c163c85a2fe4122f49de2a1cd9c12c$var$strContainsIgnoreCase(s, 'ultraexpanded')) return $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_ULTRAEXPANDED;
if ($c8c163c85a2fe4122f49de2a1cd9c12c$var$strContainsIgnoreCase(s, 'expanded')) return $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_EXPANDED;
return -1;
} // See FcContainsSlant in fcfreetype.c

}

function $c8c163c85a2fe4122f49de2a1cd9c12c$var$containsSlant(s) {
if ($c8c163c85a2fe4122f49de2a1cd9c12c$var$strContainsIgnoreCase(s, 'italic')) return $eefa2b8b831d14eeeb495d913889d53$exports.FC_SLANT_ITALIC;
Expand Down Expand Up @@ -46687,6 +46697,21 @@
if (codePageRange1 & 1 << 18 === bits17to20) return 'zh-cn';
if (codePageRange1 & 1 << 19 === bits17to20) return 'ko';
if (codePageRange1 & 1 << 20 === bits17to20) return 'zh-tw';
} // https://stackoverflow.com/a/7616484


function $c8c163c85a2fe4122f49de2a1cd9c12c$var$hash(s) {
let hash = 0,
i,
chr;

for (i = 0; i < s.length; i++) {
chr = s.charCodeAt(i);
hash = (hash << 5) - hash + chr;
hash |= 0; // Convert to 32bit integer
}

return hash;
}

$c8c163c85a2fe4122f49de2a1cd9c12c$exports = function (wasm) {
Expand Down Expand Up @@ -46761,6 +46786,7 @@
constructor(matches, coverage) {
this.matches = matches;
this.coverage = coverage;
this.key = $c8c163c85a2fe4122f49de2a1cd9c12c$var$hash(JSON.stringify(matches));
}

}
Expand Down Expand Up @@ -46809,7 +46835,19 @@
const jsfonts = raw.fonts ? raw.fonts : [raw];

for (const [index, jsfont] of jsfonts.entries()) {
const fnt = FcPatternCreate(); // Family
const fnt = FcPatternCreate(); // Preferred

if ('preferredFamily' in jsfont.name.records) {
for (const [lang, text] of Object.entries(jsfont.name.records.preferredFamily)) {
const pt = smalloc(text.toString());
const pl = smalloc(lang.toString());
FcPatternObjectAddString(fnt, $c8c163c85a2fe4122f49de2a1cd9c12c$var$FC_FAMILY_OBJECT, pt);
FcPatternObjectAddString(fnt, $c8c163c85a2fe4122f49de2a1cd9c12c$var$FC_FAMILYLANG_OBJECT, pl);
free(pt);
free(pl);
}
} // Family


if ('fontFamily' in jsfont.name.records) {
for (const [lang, text] of Object.entries(jsfont.name.records.fontFamily)) {
Expand All @@ -46832,9 +46870,20 @@
free(pt);
free(pl);
}
} // Style
} // Preferred style


if ('preferredSubFamily' in jsfont.name.records) {
for (const [lang, text] of Object.entries(jsfont.name.records.preferredSubFamily)) {
const pt = smalloc(text.toString());
const pl = smalloc(lang.toString());
FcPatternObjectAddString(fnt, $c8c163c85a2fe4122f49de2a1cd9c12c$var$FC_STYLE_OBJECT, pt);
FcPatternObjectAddString(fnt, $c8c163c85a2fe4122f49de2a1cd9c12c$var$FC_STYLELANG_OBJECT, pl);
free(pt);
free(pl);
}
}

if ('fontSubfamily' in jsfont.name.records) {
for (const [lang, text] of Object.entries(jsfont.name.records.fontSubfamily)) {
const pt = smalloc(text.toString());
Expand Down Expand Up @@ -46883,7 +46932,9 @@
if (width < 0) width = $c8c163c85a2fe4122f49de2a1cd9c12c$var$containsWidth(style);
if (slant < 0) slant = $c8c163c85a2fe4122f49de2a1cd9c12c$var$containsSlant(style);
if (!decorative) decorative = $c8c163c85a2fe4122f49de2a1cd9c12c$var$containsDecorative(style);
} // Guarantee slant, final lowest priority values
} // TODO check the style name for slant, weight, width, if < 0
// https://gitlab.freedesktop.org/fontconfig/fontconfig/-/blob/93c93689f5da4ceaa675e006df63283e25b91d49/src/fcfreetype.c#L1926
// Guarantee slant, final lowest priority values


if (slant < 0) {
Expand Down Expand Up @@ -46929,24 +46980,46 @@
const pat = FcPatternCreate();
const matches = [];

if (typeof fontspec !== 'object' || typeof fontspec.family !== 'string') {
if (typeof fontspec !== 'object' || typeof fontspec.family !== 'string' && !Array.isArray(fontspec.family)) {
throw new Error('Pass an object with at least {family: string}');
}

const familyPtr = smalloc(fontspec.family);
FcPatternObjectAddString(pat, $c8c163c85a2fe4122f49de2a1cd9c12c$var$FC_FAMILY_OBJECT, familyPtr);
free(familyPtr);
const familyNormalized = Array.isArray(fontspec.family) ? fontspec.family : [fontspec.family];

for (const family of familyNormalized) {
const familyPtr = smalloc(family);
FcPatternObjectAddString(pat, $c8c163c85a2fe4122f49de2a1cd9c12c$var$FC_FAMILY_OBJECT, familyPtr);
free(familyPtr);
}

if ('weight' in fontspec) {
FcPatternObjectAddDouble(pat, $c8c163c85a2fe4122f49de2a1cd9c12c$var$FC_WEIGHT_OBJECT, fontspec.weight);
let weight = fontspec.weight;

if (typeof weight === 'string') {
const otweight = parseInt(weight, 10);
if (!Number.isNaN(otweight)) weight = FcWeightFromOpenTypeDouble(otweight);
}

if (Number.isFinite(weight)) {
FcPatternObjectAddDouble(pat, $c8c163c85a2fe4122f49de2a1cd9c12c$var$FC_WEIGHT_OBJECT, weight);
}
}

if ('width' in fontspec) {
FcPatternObjectAddInteger(pat, $c8c163c85a2fe4122f49de2a1cd9c12c$var$FC_WIDTH_OBJECT, fontspec.width);
let width = fontspec.width;

if (typeof width === 'string' && width in $c8c163c85a2fe4122f49de2a1cd9c12c$var$Css3StretchToFcWidth) {
width = $c8c163c85a2fe4122f49de2a1cd9c12c$var$Css3StretchToFcWidth[width];
}

FcPatternObjectAddInteger(pat, $c8c163c85a2fe4122f49de2a1cd9c12c$var$FC_WIDTH_OBJECT, width);
}

if ('slant' in fontspec) {
FcPatternObjectAddInteger(pat, $c8c163c85a2fe4122f49de2a1cd9c12c$var$FC_SLANT_OBJECT, fontspec.slant);
let slant = fontspec.slant;
if (slant === 'oblique') slant = $eefa2b8b831d14eeeb495d913889d53$exports.FC_SLANT_OBLIQUE;
if (slant === 'italic') slant = $eefa2b8b831d14eeeb495d913889d53$exports.FC_SLANT_ITALIC;
FcPatternObjectAddInteger(pat, $c8c163c85a2fe4122f49de2a1cd9c12c$var$FC_SLANT_OBJECT, slant);
}

if ('coverage' in fontspec) {
Expand Down Expand Up @@ -47269,4 +47342,4 @@
});
});
})();
//# sourceMappingURL=demo.e800fe03.js.map
//# sourceMappingURL=demo.dcf871bd.js.map
2 changes: 1 addition & 1 deletion docs/demo.e800fe03.js.map → docs/demo.dcf871bd.js.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<html>
<head>
<title>fontconfigjs</title>
<script type="text/javascript" src="demo.e800fe03.js"></script>
<script type="text/javascript" src="demo.dcf871bd.js"></script>
<link href="https://fonts.googleapis.com/css2?family=Ubuntu:wght@300;400;500&display=swap" rel="stylesheet">
<style>html, body {
margin: 0;
Expand Down
4 changes: 2 additions & 2 deletions packages/demo/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -5260,8 +5260,8 @@ xtend@^4.0.0:
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"

y18n@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
version "4.0.1"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4"

yargs-parser@^15.0.1:
version "15.0.1"
Expand Down