gfonts-js-library/dist/css2.js
2023-05-20 21:39:06 +02:00

48 lines
1.4 KiB
JavaScript

export function parse_spec(input) {
let spec = {};
let [family_name, ...rest] = input.split(":");
spec["font"] = family_name.replace("+", " ");
let variants = [];
if (rest.length > 0) {
let contains_italic = false;
let is_custom_weight = false;
let raxis = rest.join("");
let [raxis_tag_list, axis_tuple_list] = raxis.split("@");
let axis_tag_list = raxis_tag_list.split(",");
for (let axis of axis_tag_list) {
if (axis === "ital") {
contains_italic = true;
}
if (axis === "wght") {
is_custom_weight = true;
}
}
for (let tuple of axis_tuple_list.split(";")) {
if (contains_italic) {
let [italic, weight] = tuple.split(",");
if (weight == null || weight.length === 0) {
weight = "400";
}
variants.push({
weight: Number(weight),
style: italic === "1" ? "italic" : "normal",
});
}
else {
variants.push({
weight: Number(tuple),
style: "normal",
});
}
}
}
else {
variants.push({
weight: 400,
style: "normal",
});
}
spec["variants"] = variants;
return spec;
}