Skip to content

Commit 141651f

Browse files
committed
webbysite build
1 parent fa42630 commit 141651f

File tree

3 files changed

+90
-17
lines changed

3 files changed

+90
-17
lines changed
Lines changed: 88 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -46604,8 +46604,20 @@
4660446604
8: $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_EXTRAEXPANDED,
4660546605
9: $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_ULTRAEXPANDED
4660646606
};
46607+
const $c8c163c85a2fe4122f49de2a1cd9c12c$var$Css3StretchToFcWidth = {
46608+
'ultra-condensed': $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_ULTRACONDENSED,
46609+
'extra-condensed': $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_EXTRACONDENSED,
46610+
'condensed': $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_CONDENSED,
46611+
'semi-condensed': $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_SEMICONDENSED,
46612+
'normal': $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_NORMAL,
46613+
'semi-expanded': $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_SEMIEXPANDED,
46614+
'expanded': $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_EXPANDED,
46615+
'extra-expanded': $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_EXTRAEXPANDED,
46616+
'ultra-expanded': $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_ULTRAEXPANDED
46617+
};
4660746618

4660846619
if (typeof TextEncoder === 'undefined') {
46620+
//nodejs
4660946621
const {
4661046622
TextEncoder,
4661146623
TextDecoder
@@ -46640,8 +46652,7 @@
4664046652
if ($c8c163c85a2fe4122f49de2a1cd9c12c$var$strContainsIgnoreCase(s, 'bold')) return $eefa2b8b831d14eeeb495d913889d53$exports.FC_WEIGHT_BOLD;
4664146653
if ($c8c163c85a2fe4122f49de2a1cd9c12c$var$strContainsIgnoreCase(s, 'ultrablack')) return $eefa2b8b831d14eeeb495d913889d53$exports.FC_WEIGHT_EXTRABLACK;
4664246654
if ($c8c163c85a2fe4122f49de2a1cd9c12c$var$strContainsIgnoreCase(s, 'superblack')) return $eefa2b8b831d14eeeb495d913889d53$exports.FC_WEIGHT_EXTRABLACK;
46643-
if ($c8c163c85a2fe4122f49de2a1cd9c12c$var$strContainsIgnoreCase(s, 'extrablack')) return $eefa2b8b831d14eeeb495d913889d53$exports.FC_WEIGHT_EXTRABLACK; // TODO ultra?
46644-
46655+
if ($c8c163c85a2fe4122f49de2a1cd9c12c$var$strContainsIgnoreCase(s, 'extrablack')) return $eefa2b8b831d14eeeb495d913889d53$exports.FC_WEIGHT_EXTRABLACK;
4664546656
if ($c8c163c85a2fe4122f49de2a1cd9c12c$var$strContainsIgnoreCase(s, 'black')) return $eefa2b8b831d14eeeb495d913889d53$exports.FC_WEIGHT_BLACK;
4664646657
if ($c8c163c85a2fe4122f49de2a1cd9c12c$var$strContainsIgnoreCase(s, 'heavy')) return $eefa2b8b831d14eeeb495d913889d53$exports.FC_WEIGHT_HEAVY;
4664746658
return -1;
@@ -46658,8 +46669,7 @@
4665846669
if ($c8c163c85a2fe4122f49de2a1cd9c12c$var$strContainsIgnoreCase(s, 'ultraexpanded')) return $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_ULTRAEXPANDED;
4665946670
if ($c8c163c85a2fe4122f49de2a1cd9c12c$var$strContainsIgnoreCase(s, 'expanded')) return $eefa2b8b831d14eeeb495d913889d53$exports.FC_WIDTH_EXPANDED;
4666046671
return -1;
46661-
} // See FcContainsSlant in fcfreetype.c
46662-
46672+
}
4666346673

4666446674
function $c8c163c85a2fe4122f49de2a1cd9c12c$var$containsSlant(s) {
4666546675
if ($c8c163c85a2fe4122f49de2a1cd9c12c$var$strContainsIgnoreCase(s, 'italic')) return $eefa2b8b831d14eeeb495d913889d53$exports.FC_SLANT_ITALIC;
@@ -46687,6 +46697,21 @@
4668746697
if (codePageRange1 & 1 << 18 === bits17to20) return 'zh-cn';
4668846698
if (codePageRange1 & 1 << 19 === bits17to20) return 'ko';
4668946699
if (codePageRange1 & 1 << 20 === bits17to20) return 'zh-tw';
46700+
} // https://stackoverflow.com/a/7616484
46701+
46702+
46703+
function $c8c163c85a2fe4122f49de2a1cd9c12c$var$hash(s) {
46704+
let hash = 0,
46705+
i,
46706+
chr;
46707+
46708+
for (i = 0; i < s.length; i++) {
46709+
chr = s.charCodeAt(i);
46710+
hash = (hash << 5) - hash + chr;
46711+
hash |= 0; // Convert to 32bit integer
46712+
}
46713+
46714+
return hash;
4669046715
}
4669146716

4669246717
$c8c163c85a2fe4122f49de2a1cd9c12c$exports = function (wasm) {
@@ -46761,6 +46786,7 @@
4676146786
constructor(matches, coverage) {
4676246787
this.matches = matches;
4676346788
this.coverage = coverage;
46789+
this.key = $c8c163c85a2fe4122f49de2a1cd9c12c$var$hash(JSON.stringify(matches));
4676446790
}
4676546791

4676646792
}
@@ -46809,7 +46835,19 @@
4680946835
const jsfonts = raw.fonts ? raw.fonts : [raw];
4681046836

4681146837
for (const [index, jsfont] of jsfonts.entries()) {
46812-
const fnt = FcPatternCreate(); // Family
46838+
const fnt = FcPatternCreate(); // Preferred
46839+
46840+
if ('preferredFamily' in jsfont.name.records) {
46841+
for (const [lang, text] of Object.entries(jsfont.name.records.preferredFamily)) {
46842+
const pt = smalloc(text.toString());
46843+
const pl = smalloc(lang.toString());
46844+
FcPatternObjectAddString(fnt, $c8c163c85a2fe4122f49de2a1cd9c12c$var$FC_FAMILY_OBJECT, pt);
46845+
FcPatternObjectAddString(fnt, $c8c163c85a2fe4122f49de2a1cd9c12c$var$FC_FAMILYLANG_OBJECT, pl);
46846+
free(pt);
46847+
free(pl);
46848+
}
46849+
} // Family
46850+
4681346851

4681446852
if ('fontFamily' in jsfont.name.records) {
4681546853
for (const [lang, text] of Object.entries(jsfont.name.records.fontFamily)) {
@@ -46832,9 +46870,20 @@
4683246870
free(pt);
4683346871
free(pl);
4683446872
}
46835-
} // Style
46873+
} // Preferred style
4683646874

4683746875

46876+
if ('preferredSubFamily' in jsfont.name.records) {
46877+
for (const [lang, text] of Object.entries(jsfont.name.records.preferredSubFamily)) {
46878+
const pt = smalloc(text.toString());
46879+
const pl = smalloc(lang.toString());
46880+
FcPatternObjectAddString(fnt, $c8c163c85a2fe4122f49de2a1cd9c12c$var$FC_STYLE_OBJECT, pt);
46881+
FcPatternObjectAddString(fnt, $c8c163c85a2fe4122f49de2a1cd9c12c$var$FC_STYLELANG_OBJECT, pl);
46882+
free(pt);
46883+
free(pl);
46884+
}
46885+
}
46886+
4683846887
if ('fontSubfamily' in jsfont.name.records) {
4683946888
for (const [lang, text] of Object.entries(jsfont.name.records.fontSubfamily)) {
4684046889
const pt = smalloc(text.toString());
@@ -46883,7 +46932,9 @@
4688346932
if (width < 0) width = $c8c163c85a2fe4122f49de2a1cd9c12c$var$containsWidth(style);
4688446933
if (slant < 0) slant = $c8c163c85a2fe4122f49de2a1cd9c12c$var$containsSlant(style);
4688546934
if (!decorative) decorative = $c8c163c85a2fe4122f49de2a1cd9c12c$var$containsDecorative(style);
46886-
} // Guarantee slant, final lowest priority values
46935+
} // TODO check the style name for slant, weight, width, if < 0
46936+
// https://gitlab.freedesktop.org/fontconfig/fontconfig/-/blob/93c93689f5da4ceaa675e006df63283e25b91d49/src/fcfreetype.c#L1926
46937+
// Guarantee slant, final lowest priority values
4688746938

4688846939

4688946940
if (slant < 0) {
@@ -46929,24 +46980,46 @@
4692946980
const pat = FcPatternCreate();
4693046981
const matches = [];
4693146982

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

46936-
const familyPtr = smalloc(fontspec.family);
46937-
FcPatternObjectAddString(pat, $c8c163c85a2fe4122f49de2a1cd9c12c$var$FC_FAMILY_OBJECT, familyPtr);
46938-
free(familyPtr);
46987+
const familyNormalized = Array.isArray(fontspec.family) ? fontspec.family : [fontspec.family];
46988+
46989+
for (const family of familyNormalized) {
46990+
const familyPtr = smalloc(family);
46991+
FcPatternObjectAddString(pat, $c8c163c85a2fe4122f49de2a1cd9c12c$var$FC_FAMILY_OBJECT, familyPtr);
46992+
free(familyPtr);
46993+
}
4693946994

4694046995
if ('weight' in fontspec) {
46941-
FcPatternObjectAddDouble(pat, $c8c163c85a2fe4122f49de2a1cd9c12c$var$FC_WEIGHT_OBJECT, fontspec.weight);
46996+
let weight = fontspec.weight;
46997+
46998+
if (typeof weight === 'string') {
46999+
const otweight = parseInt(weight, 10);
47000+
if (!Number.isNaN(otweight)) weight = FcWeightFromOpenTypeDouble(otweight);
47001+
}
47002+
47003+
if (Number.isFinite(weight)) {
47004+
FcPatternObjectAddDouble(pat, $c8c163c85a2fe4122f49de2a1cd9c12c$var$FC_WEIGHT_OBJECT, weight);
47005+
}
4694247006
}
4694347007

4694447008
if ('width' in fontspec) {
46945-
FcPatternObjectAddInteger(pat, $c8c163c85a2fe4122f49de2a1cd9c12c$var$FC_WIDTH_OBJECT, fontspec.width);
47009+
let width = fontspec.width;
47010+
47011+
if (typeof width === 'string' && width in $c8c163c85a2fe4122f49de2a1cd9c12c$var$Css3StretchToFcWidth) {
47012+
width = $c8c163c85a2fe4122f49de2a1cd9c12c$var$Css3StretchToFcWidth[width];
47013+
}
47014+
47015+
FcPatternObjectAddInteger(pat, $c8c163c85a2fe4122f49de2a1cd9c12c$var$FC_WIDTH_OBJECT, width);
4694647016
}
4694747017

4694847018
if ('slant' in fontspec) {
46949-
FcPatternObjectAddInteger(pat, $c8c163c85a2fe4122f49de2a1cd9c12c$var$FC_SLANT_OBJECT, fontspec.slant);
47019+
let slant = fontspec.slant;
47020+
if (slant === 'oblique') slant = $eefa2b8b831d14eeeb495d913889d53$exports.FC_SLANT_OBLIQUE;
47021+
if (slant === 'italic') slant = $eefa2b8b831d14eeeb495d913889d53$exports.FC_SLANT_ITALIC;
47022+
FcPatternObjectAddInteger(pat, $c8c163c85a2fe4122f49de2a1cd9c12c$var$FC_SLANT_OBJECT, slant);
4695047023
}
4695147024

4695247025
if ('coverage' in fontspec) {
@@ -47269,4 +47342,4 @@
4726947342
});
4727047343
});
4727147344
})();
47272-
//# sourceMappingURL=demo.e800fe03.js.map
47345+
//# sourceMappingURL=demo.dcf871bd.js.map
Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<html>
33
<head>
44
<title>fontconfigjs</title>
5-
<script type="text/javascript" src="demo.e800fe03.js"></script>
5+
<script type="text/javascript" src="demo.dcf871bd.js"></script>
66
<link href="https://fonts.googleapis.com/css2?family=Ubuntu:wght@300;400;500&display=swap" rel="stylesheet">
77
<style>html, body {
88
margin: 0;

0 commit comments

Comments
 (0)