fix: embed portable static fonts for CV preview and PDF fidelity
This commit is contained in:
@@ -5,3 +5,6 @@
|
|||||||
|
|
||||||
# Preserve the exact exported bytes used by the spreadsheet regression evidence.
|
# Preserve the exact exported bytes used by the spreadsheet regression evidence.
|
||||||
/docs/audits/2026-09-07/validation/evidence/*.csv binary
|
/docs/audits/2026-09-07/validation/evidence/*.csv binary
|
||||||
|
# Preserve vendored font/license bytes across Windows and Linux checkouts.
|
||||||
|
JobTrackerApi/DocumentFonts/*.ttf -text
|
||||||
|
JobTrackerApi/DocumentFonts/*.txt text eol=lf
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
using JobTrackerApi.Models;
|
||||||
|
using JobTrackerApi.Services;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace JobTrackerApi.Tests;
|
||||||
|
|
||||||
|
public sealed class CvDocumentFontsTests
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void Embedded_fonts_use_static_outlines_for_the_CLI_renderer()
|
||||||
|
{
|
||||||
|
var assembly = typeof(ThemedCvRenderer).Assembly;
|
||||||
|
var fonts = assembly.GetManifestResourceNames().Where(name => name.StartsWith("CvFonts.") && name.EndsWith(".ttf")).ToArray();
|
||||||
|
Assert.NotEmpty(fonts);
|
||||||
|
foreach (var name in fonts)
|
||||||
|
{
|
||||||
|
using var stream = assembly.GetManifestResourceStream(name)!;
|
||||||
|
using var bytes = new MemoryStream();
|
||||||
|
stream.CopyTo(bytes);
|
||||||
|
var data = bytes.ToArray();
|
||||||
|
var count = System.Buffers.Binary.BinaryPrimitives.ReadUInt16BigEndian(data.AsSpan(4, 2));
|
||||||
|
var tables = Enumerable.Range(0, count).Select(i => System.Text.Encoding.ASCII.GetString(data, 12 + i * 16, 4));
|
||||||
|
Assert.DoesNotContain("fvar", tables);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Theory]
|
||||||
|
[InlineData("modern")]
|
||||||
|
[InlineData("minimal")]
|
||||||
|
[InlineData("executive")]
|
||||||
|
[InlineData("technical")]
|
||||||
|
[InlineData("creative")]
|
||||||
|
[InlineData("code")]
|
||||||
|
public void Document_is_self_contained_and_does_not_depend_on_installed_fonts(string themeId)
|
||||||
|
{
|
||||||
|
var profile = new StructuredCvProfile { Contact = { FullName = "Åse æøå" }, Summary = { "Retained career content." } };
|
||||||
|
var settings = new CvVariantSettings { ThemeId = themeId };
|
||||||
|
var model = CvVariantResolver.Build(profile, settings, "Fallback", null);
|
||||||
|
var html = new ThemedCvRenderer().Render(model, CvThemeCatalog.Resolve(themeId), settings).Html;
|
||||||
|
Assert.Contains("@font-face", html);
|
||||||
|
Assert.Contains("data:font/ttf;base64,", html);
|
||||||
|
Assert.DoesNotContain("src:local(", html);
|
||||||
|
Assert.Contains("Retained career content.", html);
|
||||||
|
Assert.Null(settings.BodyFont);
|
||||||
|
Assert.Null(settings.HeadingFont);
|
||||||
|
Assert.Equal("Åse æøå", profile.Contact.FullName);
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,93 @@
|
|||||||
|
Copyright 2026 The Arimo Project Authors (https://github.com/googlefonts/Arimo)
|
||||||
|
|
||||||
|
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||||
|
This license is copied below, and is also available with a FAQ at:
|
||||||
|
https://openfontlicense.org
|
||||||
|
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
PREAMBLE
|
||||||
|
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||||
|
development of collaborative font projects, to support the font creation
|
||||||
|
efforts of academic and linguistic communities, and to provide a free and
|
||||||
|
open framework in which fonts may be shared and improved in partnership
|
||||||
|
with others.
|
||||||
|
|
||||||
|
The OFL allows the licensed fonts to be used, studied, modified and
|
||||||
|
redistributed freely as long as they are not sold by themselves. The
|
||||||
|
fonts, including any derivative works, can be bundled, embedded,
|
||||||
|
redistributed and/or sold with any software provided that any reserved
|
||||||
|
names are not used by derivative works. The fonts and derivatives,
|
||||||
|
however, cannot be released under any other type of license. The
|
||||||
|
requirement for fonts to remain under this license does not apply
|
||||||
|
to any document created using the fonts or their derivatives.
|
||||||
|
|
||||||
|
DEFINITIONS
|
||||||
|
"Font Software" refers to the set of files released by the Copyright
|
||||||
|
Holder(s) under this license and clearly marked as such. This may
|
||||||
|
include source files, build scripts and documentation.
|
||||||
|
|
||||||
|
"Reserved Font Name" refers to any names specified as such after the
|
||||||
|
copyright statement(s).
|
||||||
|
|
||||||
|
"Original Version" refers to the collection of Font Software components as
|
||||||
|
distributed by the Copyright Holder(s).
|
||||||
|
|
||||||
|
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||||
|
or substituting -- in part or in whole -- any of the components of the
|
||||||
|
Original Version, by changing formats or by porting the Font Software to a
|
||||||
|
new environment.
|
||||||
|
|
||||||
|
"Author" refers to any designer, engineer, programmer, technical
|
||||||
|
writer or other person who contributed to the Font Software.
|
||||||
|
|
||||||
|
PERMISSION & CONDITIONS
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||||
|
redistribute, and sell modified and unmodified copies of the Font
|
||||||
|
Software, subject to the following conditions:
|
||||||
|
|
||||||
|
1) Neither the Font Software nor any of its individual components,
|
||||||
|
in Original or Modified Versions, may be sold by itself.
|
||||||
|
|
||||||
|
2) Original or Modified Versions of the Font Software may be bundled,
|
||||||
|
redistributed and/or sold with any software, provided that each copy
|
||||||
|
contains the above copyright notice and this license. These can be
|
||||||
|
included either as stand-alone text files, human-readable headers or
|
||||||
|
in the appropriate machine-readable metadata fields within text or
|
||||||
|
binary files as long as those fields can be easily viewed by the user.
|
||||||
|
|
||||||
|
3) No Modified Version of the Font Software may use the Reserved Font
|
||||||
|
Name(s) unless explicit written permission is granted by the corresponding
|
||||||
|
Copyright Holder. This restriction only applies to the primary font name as
|
||||||
|
presented to the users.
|
||||||
|
|
||||||
|
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||||
|
Software shall not be used to promote, endorse or advertise any
|
||||||
|
Modified Version, except to acknowledge the contribution(s) of the
|
||||||
|
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||||
|
permission.
|
||||||
|
|
||||||
|
5) The Font Software, modified or unmodified, in part or in whole,
|
||||||
|
must be distributed entirely under this license, and must not be
|
||||||
|
distributed under any other license. The requirement for fonts to
|
||||||
|
remain under this license does not apply to any document created
|
||||||
|
using the Font Software.
|
||||||
|
|
||||||
|
TERMINATION
|
||||||
|
This license becomes null and void if any of the above conditions are
|
||||||
|
not met.
|
||||||
|
|
||||||
|
DISCLAIMER
|
||||||
|
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||||
|
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||||
|
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||||
|
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
Copyright 2022 The Gelasio Project Authors (https://github.com/SorkinType/Gelasio)
|
||||||
|
|
||||||
|
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||||
|
This license is copied below, and is also available with a FAQ at:
|
||||||
|
https://openfontlicense.org
|
||||||
|
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
PREAMBLE
|
||||||
|
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||||
|
development of collaborative font projects, to support the font creation
|
||||||
|
efforts of academic and linguistic communities, and to provide a free and
|
||||||
|
open framework in which fonts may be shared and improved in partnership
|
||||||
|
with others.
|
||||||
|
|
||||||
|
The OFL allows the licensed fonts to be used, studied, modified and
|
||||||
|
redistributed freely as long as they are not sold by themselves. The
|
||||||
|
fonts, including any derivative works, can be bundled, embedded,
|
||||||
|
redistributed and/or sold with any software provided that any reserved
|
||||||
|
names are not used by derivative works. The fonts and derivatives,
|
||||||
|
however, cannot be released under any other type of license. The
|
||||||
|
requirement for fonts to remain under this license does not apply
|
||||||
|
to any document created using the fonts or their derivatives.
|
||||||
|
|
||||||
|
DEFINITIONS
|
||||||
|
"Font Software" refers to the set of files released by the Copyright
|
||||||
|
Holder(s) under this license and clearly marked as such. This may
|
||||||
|
include source files, build scripts and documentation.
|
||||||
|
|
||||||
|
"Reserved Font Name" refers to any names specified as such after the
|
||||||
|
copyright statement(s).
|
||||||
|
|
||||||
|
"Original Version" refers to the collection of Font Software components as
|
||||||
|
distributed by the Copyright Holder(s).
|
||||||
|
|
||||||
|
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||||
|
or substituting -- in part or in whole -- any of the components of the
|
||||||
|
Original Version, by changing formats or by porting the Font Software to a
|
||||||
|
new environment.
|
||||||
|
|
||||||
|
"Author" refers to any designer, engineer, programmer, technical
|
||||||
|
writer or other person who contributed to the Font Software.
|
||||||
|
|
||||||
|
PERMISSION & CONDITIONS
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||||
|
redistribute, and sell modified and unmodified copies of the Font
|
||||||
|
Software, subject to the following conditions:
|
||||||
|
|
||||||
|
1) Neither the Font Software nor any of its individual components,
|
||||||
|
in Original or Modified Versions, may be sold by itself.
|
||||||
|
|
||||||
|
2) Original or Modified Versions of the Font Software may be bundled,
|
||||||
|
redistributed and/or sold with any software, provided that each copy
|
||||||
|
contains the above copyright notice and this license. These can be
|
||||||
|
included either as stand-alone text files, human-readable headers or
|
||||||
|
in the appropriate machine-readable metadata fields within text or
|
||||||
|
binary files as long as those fields can be easily viewed by the user.
|
||||||
|
|
||||||
|
3) No Modified Version of the Font Software may use the Reserved Font
|
||||||
|
Name(s) unless explicit written permission is granted by the corresponding
|
||||||
|
Copyright Holder. This restriction only applies to the primary font name as
|
||||||
|
presented to the users.
|
||||||
|
|
||||||
|
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||||
|
Software shall not be used to promote, endorse or advertise any
|
||||||
|
Modified Version, except to acknowledge the contribution(s) of the
|
||||||
|
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||||
|
permission.
|
||||||
|
|
||||||
|
5) The Font Software, modified or unmodified, in part or in whole,
|
||||||
|
must be distributed entirely under this license, and must not be
|
||||||
|
distributed under any other license. The requirement for fonts to
|
||||||
|
remain under this license does not apply to any document created
|
||||||
|
using the Font Software.
|
||||||
|
|
||||||
|
TERMINATION
|
||||||
|
This license becomes null and void if any of the above conditions are
|
||||||
|
not met.
|
||||||
|
|
||||||
|
DISCLAIMER
|
||||||
|
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||||
|
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||||
|
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||||
|
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
Copyright 2020 The Poppins Project Authors (https://github.com/itfoundry/Poppins)
|
||||||
|
|
||||||
|
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||||
|
This license is copied below, and is also available with a FAQ at:
|
||||||
|
http://scripts.sil.org/OFL
|
||||||
|
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
PREAMBLE
|
||||||
|
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||||
|
development of collaborative font projects, to support the font creation
|
||||||
|
efforts of academic and linguistic communities, and to provide a free and
|
||||||
|
open framework in which fonts may be shared and improved in partnership
|
||||||
|
with others.
|
||||||
|
|
||||||
|
The OFL allows the licensed fonts to be used, studied, modified and
|
||||||
|
redistributed freely as long as they are not sold by themselves. The
|
||||||
|
fonts, including any derivative works, can be bundled, embedded,
|
||||||
|
redistributed and/or sold with any software provided that any reserved
|
||||||
|
names are not used by derivative works. The fonts and derivatives,
|
||||||
|
however, cannot be released under any other type of license. The
|
||||||
|
requirement for fonts to remain under this license does not apply
|
||||||
|
to any document created using the fonts or their derivatives.
|
||||||
|
|
||||||
|
DEFINITIONS
|
||||||
|
"Font Software" refers to the set of files released by the Copyright
|
||||||
|
Holder(s) under this license and clearly marked as such. This may
|
||||||
|
include source files, build scripts and documentation.
|
||||||
|
|
||||||
|
"Reserved Font Name" refers to any names specified as such after the
|
||||||
|
copyright statement(s).
|
||||||
|
|
||||||
|
"Original Version" refers to the collection of Font Software components as
|
||||||
|
distributed by the Copyright Holder(s).
|
||||||
|
|
||||||
|
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||||
|
or substituting -- in part or in whole -- any of the components of the
|
||||||
|
Original Version, by changing formats or by porting the Font Software to a
|
||||||
|
new environment.
|
||||||
|
|
||||||
|
"Author" refers to any designer, engineer, programmer, technical
|
||||||
|
writer or other person who contributed to the Font Software.
|
||||||
|
|
||||||
|
PERMISSION & CONDITIONS
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||||
|
redistribute, and sell modified and unmodified copies of the Font
|
||||||
|
Software, subject to the following conditions:
|
||||||
|
|
||||||
|
1) Neither the Font Software nor any of its individual components,
|
||||||
|
in Original or Modified Versions, may be sold by itself.
|
||||||
|
|
||||||
|
2) Original or Modified Versions of the Font Software may be bundled,
|
||||||
|
redistributed and/or sold with any software, provided that each copy
|
||||||
|
contains the above copyright notice and this license. These can be
|
||||||
|
included either as stand-alone text files, human-readable headers or
|
||||||
|
in the appropriate machine-readable metadata fields within text or
|
||||||
|
binary files as long as those fields can be easily viewed by the user.
|
||||||
|
|
||||||
|
3) No Modified Version of the Font Software may use the Reserved Font
|
||||||
|
Name(s) unless explicit written permission is granted by the corresponding
|
||||||
|
Copyright Holder. This restriction only applies to the primary font name as
|
||||||
|
presented to the users.
|
||||||
|
|
||||||
|
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||||
|
Software shall not be used to promote, endorse or advertise any
|
||||||
|
Modified Version, except to acknowledge the contribution(s) of the
|
||||||
|
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||||
|
permission.
|
||||||
|
|
||||||
|
5) The Font Software, modified or unmodified, in part or in whole,
|
||||||
|
must be distributed entirely under this license, and must not be
|
||||||
|
distributed under any other license. The requirement for fonts to
|
||||||
|
remain under this license does not apply to any document created
|
||||||
|
using the Font Software.
|
||||||
|
|
||||||
|
TERMINATION
|
||||||
|
This license becomes null and void if any of the above conditions are
|
||||||
|
not met.
|
||||||
|
|
||||||
|
DISCLAIMER
|
||||||
|
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||||
|
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||||
|
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||||
|
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||||
@@ -0,0 +1,203 @@
|
|||||||
|
{
|
||||||
|
"googleFontsCommit": "e7db6ca603fd4862010383ff17ffd6cc4ffac1c0",
|
||||||
|
"selawikRelease": "https://github.com/microsoft/Selawik/releases/tag/1.01",
|
||||||
|
"sourceEvidence": ".artifacts/p9-remed-02/fonts/provenance.json",
|
||||||
|
"fontFilesUnmodified": true,
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"file": "Arimo-Regular.ttf",
|
||||||
|
"source": "https://raw.githubusercontent.com/googlefonts/Arimo/4a6255f269916ae7ad3fc2706b0935e7621396b8/fonts/ttf/Arimo-Regular.ttf",
|
||||||
|
"sha256": "41b22bc8f0b51f932825d37bc55b5eb6ba67dfe599a626e4aff2b43b624f9f8c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Arimo-Italic.ttf",
|
||||||
|
"source": "https://raw.githubusercontent.com/googlefonts/Arimo/4a6255f269916ae7ad3fc2706b0935e7621396b8/fonts/ttf/Arimo-Italic.ttf",
|
||||||
|
"sha256": "ffdf690e4357a392e4edcc3df0b3adb0302920f75e54f2e6eec355afbe7edcba"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Arimo-Bold.ttf",
|
||||||
|
"source": "https://raw.githubusercontent.com/googlefonts/Arimo/4a6255f269916ae7ad3fc2706b0935e7621396b8/fonts/ttf/Arimo-Bold.ttf",
|
||||||
|
"sha256": "d7a8b187cf8444d4cfee102e8eae9e3043682fd5106d5d33ed677fe268a0e2ba"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Arimo-BoldItalic.ttf",
|
||||||
|
"source": "https://raw.githubusercontent.com/googlefonts/Arimo/4a6255f269916ae7ad3fc2706b0935e7621396b8/fonts/ttf/Arimo-BoldItalic.ttf",
|
||||||
|
"sha256": "77c967d49d4ef4a63c39fbcd1e27892102e503e35a20983cb058430c4f268b34"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "arimo.OFL.txt",
|
||||||
|
"source": "https://raw.githubusercontent.com/googlefonts/Arimo/4a6255f269916ae7ad3fc2706b0935e7621396b8/OFL.txt",
|
||||||
|
"sha256": "c46fda6859efb80c0a3c1faa868908a3d2fcb26eb7fd9602d73bebeec21bca3a"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Gelasio-Regular.ttf",
|
||||||
|
"source": "https://raw.githubusercontent.com/SorkinType/Gelasio/7ab20e7e5c42791e603b9ee3201a0b49849cfdb2/fonts/ttf/Gelasio-Regular.ttf",
|
||||||
|
"sha256": "48c797fbe0e07c48a18cb962e7bdfa23f19618327dddf54093265328dc9eb39d"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Gelasio-Italic.ttf",
|
||||||
|
"source": "https://raw.githubusercontent.com/SorkinType/Gelasio/7ab20e7e5c42791e603b9ee3201a0b49849cfdb2/fonts/ttf/Gelasio-Italic.ttf",
|
||||||
|
"sha256": "1d8bda4ff258bb8251eae4f7d7500c8d97d084136192bb264bc2305168765d1b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Gelasio-SemiBold.ttf",
|
||||||
|
"source": "https://raw.githubusercontent.com/SorkinType/Gelasio/7ab20e7e5c42791e603b9ee3201a0b49849cfdb2/fonts/ttf/Gelasio-SemiBold.ttf",
|
||||||
|
"sha256": "f5eb3f3e395d1958bef5449bacda5e815aeab40cf40a24f71c2ad163c196a6ba"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Gelasio-SemiBoldItalic.ttf",
|
||||||
|
"source": "https://raw.githubusercontent.com/SorkinType/Gelasio/7ab20e7e5c42791e603b9ee3201a0b49849cfdb2/fonts/ttf/Gelasio-SemiBoldItalic.ttf",
|
||||||
|
"sha256": "9ab9c9363546116bea8296a66e0bde426cdcecebafc406c417cd4ade4188f48c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Gelasio-Bold.ttf",
|
||||||
|
"source": "https://raw.githubusercontent.com/SorkinType/Gelasio/7ab20e7e5c42791e603b9ee3201a0b49849cfdb2/fonts/ttf/Gelasio-Bold.ttf",
|
||||||
|
"sha256": "e0ef3addf1acf35f5c6aef2be00d0a2c01363bf70a5950e16650976051a0c462"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Gelasio-BoldItalic.ttf",
|
||||||
|
"source": "https://raw.githubusercontent.com/SorkinType/Gelasio/7ab20e7e5c42791e603b9ee3201a0b49849cfdb2/fonts/ttf/Gelasio-BoldItalic.ttf",
|
||||||
|
"sha256": "aa87e21b46aef3dcb50a68dc6e1946f0c0a9819d067e4be6a98a6daa8f5b3c16"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "gelasio.OFL.txt",
|
||||||
|
"source": "https://raw.githubusercontent.com/SorkinType/Gelasio/7ab20e7e5c42791e603b9ee3201a0b49849cfdb2/OFL.txt",
|
||||||
|
"sha256": "b393cb01867c919b44381512120dc3e4c954c7b47e2035c405f3a324799a4d29"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "RobotoMono-Regular.ttf",
|
||||||
|
"source": "https://raw.githubusercontent.com/googlefonts/RobotoMono/895ec691990d041dd727c7b5afa3ce56525d98e6/fonts/ttf/RobotoMono-Regular.ttf",
|
||||||
|
"sha256": "af0bff7599c3df3831755c16e39b3c496df74b8c8d8a1161b14dc8461be17cb4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "RobotoMono-Italic.ttf",
|
||||||
|
"source": "https://raw.githubusercontent.com/googlefonts/RobotoMono/895ec691990d041dd727c7b5afa3ce56525d98e6/fonts/ttf/RobotoMono-Italic.ttf",
|
||||||
|
"sha256": "4549325cd2d10938d37d63eba2aaca7c2e16e48322dc767576eab45e512b6ad2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "RobotoMono-Medium.ttf",
|
||||||
|
"source": "https://raw.githubusercontent.com/googlefonts/RobotoMono/895ec691990d041dd727c7b5afa3ce56525d98e6/fonts/ttf/RobotoMono-Medium.ttf",
|
||||||
|
"sha256": "4acbb2725a260eafff1bcaade3501204ca774e56346e259ee1b61d56996d2611"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "RobotoMono-MediumItalic.ttf",
|
||||||
|
"source": "https://raw.githubusercontent.com/googlefonts/RobotoMono/895ec691990d041dd727c7b5afa3ce56525d98e6/fonts/ttf/RobotoMono-MediumItalic.ttf",
|
||||||
|
"sha256": "e01593c1cf8034729deb4ebe412d19884907ca1156962169bca624ef139d827a"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "RobotoMono-Bold.ttf",
|
||||||
|
"source": "https://raw.githubusercontent.com/googlefonts/RobotoMono/895ec691990d041dd727c7b5afa3ce56525d98e6/fonts/ttf/RobotoMono-Bold.ttf",
|
||||||
|
"sha256": "3ecf35e5e87accc7578b605d1f5f0bc30d88b195d6807bec8a0c57f6aa95c4db"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "RobotoMono-BoldItalic.ttf",
|
||||||
|
"source": "https://raw.githubusercontent.com/googlefonts/RobotoMono/895ec691990d041dd727c7b5afa3ce56525d98e6/fonts/ttf/RobotoMono-BoldItalic.ttf",
|
||||||
|
"sha256": "a0f16567447311eaf42a35f6c50eb64b911694b42f1b01038e3b7e92c20f131d"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "robotomono.OFL.txt",
|
||||||
|
"source": "https://raw.githubusercontent.com/googlefonts/RobotoMono/895ec691990d041dd727c7b5afa3ce56525d98e6/OFL.txt",
|
||||||
|
"sha256": "50ab8dd54680d3473f649c9db86fece88434d097c7834475c1c72d2f8c429215"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Roboto-Regular.ttf",
|
||||||
|
"source": "https://github.com/googlefonts/roboto-3-classic/releases/download/v3.016/Roboto_v3.016.zip#android/static/Roboto-Regular.ttf",
|
||||||
|
"sha256": "e688a215e0841b6e4edb1207c93f88f4c609f82e870884349a7257e449eb9355"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Roboto-Italic.ttf",
|
||||||
|
"source": "https://github.com/googlefonts/roboto-3-classic/releases/download/v3.016/Roboto_v3.016.zip#android/static/Roboto-Italic.ttf",
|
||||||
|
"sha256": "1f4b29f2e9c648707620a0768f4030df7abb15c25383fb73d088fe2624724f46"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Roboto-Medium.ttf",
|
||||||
|
"source": "https://github.com/googlefonts/roboto-3-classic/releases/download/v3.016/Roboto_v3.016.zip#android/static/Roboto-Medium.ttf",
|
||||||
|
"sha256": "3e4dca65eead6ff95f6963ab1f489d055086bcc5a62b2afed5d72e62b0c04ba5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Roboto-MediumItalic.ttf",
|
||||||
|
"source": "https://github.com/googlefonts/roboto-3-classic/releases/download/v3.016/Roboto_v3.016.zip#android/static/Roboto-MediumItalic.ttf",
|
||||||
|
"sha256": "bf74cbbe08685994cb28404dc50ecdb38816b8e7062c52f3a7af5e4f0c7042dc"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Roboto-Bold.ttf",
|
||||||
|
"source": "https://github.com/googlefonts/roboto-3-classic/releases/download/v3.016/Roboto_v3.016.zip#android/static/Roboto-Bold.ttf",
|
||||||
|
"sha256": "9aa793ad5e12c3b2486464ec6f047f16ac6d30bb06c8b4d162ba313459794968"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "Roboto-BoldItalic.ttf",
|
||||||
|
"source": "https://github.com/googlefonts/roboto-3-classic/releases/download/v3.016/Roboto_v3.016.zip#android/static/Roboto-BoldItalic.ttf",
|
||||||
|
"sha256": "8942bdf86849104971ccc41f038a91cc7e84a6b04a0df718fca6cac0a8c4e44a"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "roboto.OFL.txt",
|
||||||
|
"source": "https://raw.githubusercontent.com/googlefonts/roboto-3-classic/5166f3d07889bf7d3732fb72e09623d7e52f862b/OFL.txt",
|
||||||
|
"sha256": "061402327a96aadb0bfb694a960ed289ecd38d383e396243831ab81feb109c41"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"family": "poppins",
|
||||||
|
"file": "Poppins-Bold.ttf",
|
||||||
|
"sha256": "983676516167748b74de6f4771fb384c664fd913acb8b471122ecacf5da5ea6c",
|
||||||
|
"source": "https://raw.githubusercontent.com/google/fonts/e7db6ca603fd4862010383ff17ffd6cc4ffac1c0/ofl/poppins/Poppins-Bold.ttf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"family": "poppins",
|
||||||
|
"file": "Poppins-BoldItalic.ttf",
|
||||||
|
"sha256": "3572ac8116a0ac7317d342262b29937bcbaf94d8f03f90df6fe666fa7e2fb43a",
|
||||||
|
"source": "https://raw.githubusercontent.com/google/fonts/e7db6ca603fd4862010383ff17ffd6cc4ffac1c0/ofl/poppins/Poppins-BoldItalic.ttf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"family": "poppins",
|
||||||
|
"file": "Poppins-Italic.ttf",
|
||||||
|
"sha256": "4fa76ae75b40f926420514044722cb97f32186cafd3b38263cc34dad7174d46d",
|
||||||
|
"source": "https://raw.githubusercontent.com/google/fonts/e7db6ca603fd4862010383ff17ffd6cc4ffac1c0/ofl/poppins/Poppins-Italic.ttf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"family": "poppins",
|
||||||
|
"file": "Poppins-Regular.ttf",
|
||||||
|
"sha256": "7e65201e9b79159e2300267cc885e16c8dcef2424cdfa09a29bfb0980a94a7ba",
|
||||||
|
"source": "https://raw.githubusercontent.com/google/fonts/e7db6ca603fd4862010383ff17ffd6cc4ffac1c0/ofl/poppins/Poppins-Regular.ttf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"family": "poppins",
|
||||||
|
"file": "Poppins-SemiBold.ttf",
|
||||||
|
"sha256": "d3bf1bdaf0550e83da9ac0b1d1d9fe6db086835a83aa28578e609a394b9a0286",
|
||||||
|
"source": "https://raw.githubusercontent.com/google/fonts/e7db6ca603fd4862010383ff17ffd6cc4ffac1c0/ofl/poppins/Poppins-SemiBold.ttf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"family": "poppins",
|
||||||
|
"file": "Poppins-SemiBoldItalic.ttf",
|
||||||
|
"sha256": "16bb118aa232c9a13fa238027d24d7854dd1a1d9cbaf99b17fec4388d56b432c",
|
||||||
|
"source": "https://raw.githubusercontent.com/google/fonts/e7db6ca603fd4862010383ff17ffd6cc4ffac1c0/ofl/poppins/Poppins-SemiBoldItalic.ttf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"family": "selawik",
|
||||||
|
"file": "selawk.ttf",
|
||||||
|
"sha256": "e9d98518d8ac2817782a9a382430463a2e0793ea68350b695bb727d9a830ee1c",
|
||||||
|
"source": "https://github.com/microsoft/Selawik/releases/download/1.01/Selawik_Release.zip#selawk.ttf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"family": "selawik",
|
||||||
|
"file": "selawkb.ttf",
|
||||||
|
"sha256": "f0db5e174a90e0956ad7d2844bdca1d5e6da92ec65b2c04e57ba9b180668c904",
|
||||||
|
"source": "https://github.com/microsoft/Selawik/releases/download/1.01/Selawik_Release.zip#selawkb.ttf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"family": "selawik",
|
||||||
|
"file": "selawksb.ttf",
|
||||||
|
"sha256": "0a9e9d0549a10f24bef9b3a29e06fe6e0b5c21e7a784c503b048a307841a7783",
|
||||||
|
"source": "https://github.com/microsoft/Selawik/releases/download/1.01/Selawik_Release.zip#selawksb.ttf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "poppins.OFL.txt",
|
||||||
|
"source": "https://raw.githubusercontent.com/google/fonts/e7db6ca603fd4862010383ff17ffd6cc4ffac1c0/ofl/poppins/OFL.txt",
|
||||||
|
"sha256": "6be04893d770899a015649c7aa3b582f871b272f8747a92b78b17c3e5c8b2573"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "selawik.OFL.txt",
|
||||||
|
"source": "https://raw.githubusercontent.com/microsoft/Selawik/89362e84731d1f5777fa078fd4d5ebbd339e4378/LICENSE.txt",
|
||||||
|
"sha256": "77b7c2506d4efb22e09c8ccf10159f4956eab3ef7c007fef95de136bcf45300c"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"staticFontReason": "Chromium156 emits variable-font Type3 descriptors without FontBBox/Ascent/Descent; upstream static originals preserve extractable PDF geometry. No local conversion or font modification."
|
||||||
|
}
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
Copyright 2011 The Roboto Project Authors (https://github.com/googlefonts/roboto-classic)
|
||||||
|
|
||||||
|
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||||
|
This license is copied below, and is also available with a FAQ at:
|
||||||
|
https://openfontlicense.org
|
||||||
|
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
PREAMBLE
|
||||||
|
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||||
|
development of collaborative font projects, to support the font creation
|
||||||
|
efforts of academic and linguistic communities, and to provide a free and
|
||||||
|
open framework in which fonts may be shared and improved in partnership
|
||||||
|
with others.
|
||||||
|
|
||||||
|
The OFL allows the licensed fonts to be used, studied, modified and
|
||||||
|
redistributed freely as long as they are not sold by themselves. The
|
||||||
|
fonts, including any derivative works, can be bundled, embedded,
|
||||||
|
redistributed and/or sold with any software provided that any reserved
|
||||||
|
names are not used by derivative works. The fonts and derivatives,
|
||||||
|
however, cannot be released under any other type of license. The
|
||||||
|
requirement for fonts to remain under this license does not apply
|
||||||
|
to any document created using the fonts or their derivatives.
|
||||||
|
|
||||||
|
DEFINITIONS
|
||||||
|
"Font Software" refers to the set of files released by the Copyright
|
||||||
|
Holder(s) under this license and clearly marked as such. This may
|
||||||
|
include source files, build scripts and documentation.
|
||||||
|
|
||||||
|
"Reserved Font Name" refers to any names specified as such after the
|
||||||
|
copyright statement(s).
|
||||||
|
|
||||||
|
"Original Version" refers to the collection of Font Software components as
|
||||||
|
distributed by the Copyright Holder(s).
|
||||||
|
|
||||||
|
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||||
|
or substituting -- in part or in whole -- any of the components of the
|
||||||
|
Original Version, by changing formats or by porting the Font Software to a
|
||||||
|
new environment.
|
||||||
|
|
||||||
|
"Author" refers to any designer, engineer, programmer, technical
|
||||||
|
writer or other person who contributed to the Font Software.
|
||||||
|
|
||||||
|
PERMISSION & CONDITIONS
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||||
|
redistribute, and sell modified and unmodified copies of the Font
|
||||||
|
Software, subject to the following conditions:
|
||||||
|
|
||||||
|
1) Neither the Font Software nor any of its individual components,
|
||||||
|
in Original or Modified Versions, may be sold by itself.
|
||||||
|
|
||||||
|
2) Original or Modified Versions of the Font Software may be bundled,
|
||||||
|
redistributed and/or sold with any software, provided that each copy
|
||||||
|
contains the above copyright notice and this license. These can be
|
||||||
|
included either as stand-alone text files, human-readable headers or
|
||||||
|
in the appropriate machine-readable metadata fields within text or
|
||||||
|
binary files as long as those fields can be easily viewed by the user.
|
||||||
|
|
||||||
|
3) No Modified Version of the Font Software may use the Reserved Font
|
||||||
|
Name(s) unless explicit written permission is granted by the corresponding
|
||||||
|
Copyright Holder. This restriction only applies to the primary font name as
|
||||||
|
presented to the users.
|
||||||
|
|
||||||
|
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||||
|
Software shall not be used to promote, endorse or advertise any
|
||||||
|
Modified Version, except to acknowledge the contribution(s) of the
|
||||||
|
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||||
|
permission.
|
||||||
|
|
||||||
|
5) The Font Software, modified or unmodified, in part or in whole,
|
||||||
|
must be distributed entirely under this license, and must not be
|
||||||
|
distributed under any other license. The requirement for fonts to
|
||||||
|
remain under this license does not apply to any document created
|
||||||
|
using the Font Software.
|
||||||
|
|
||||||
|
TERMINATION
|
||||||
|
This license becomes null and void if any of the above conditions are
|
||||||
|
not met.
|
||||||
|
|
||||||
|
DISCLAIMER
|
||||||
|
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||||
|
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||||
|
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||||
|
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
Copyright 2015 The Roboto Mono Project Authors (https://github.com/googlefonts/robotomono)
|
||||||
|
|
||||||
|
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||||
|
This license is copied below, and is also available with a FAQ at:
|
||||||
|
https://openfontlicense.org
|
||||||
|
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
PREAMBLE
|
||||||
|
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||||
|
development of collaborative font projects, to support the font creation
|
||||||
|
efforts of academic and linguistic communities, and to provide a free and
|
||||||
|
open framework in which fonts may be shared and improved in partnership
|
||||||
|
with others.
|
||||||
|
|
||||||
|
The OFL allows the licensed fonts to be used, studied, modified and
|
||||||
|
redistributed freely as long as they are not sold by themselves. The
|
||||||
|
fonts, including any derivative works, can be bundled, embedded,
|
||||||
|
redistributed and/or sold with any software provided that any reserved
|
||||||
|
names are not used by derivative works. The fonts and derivatives,
|
||||||
|
however, cannot be released under any other type of license. The
|
||||||
|
requirement for fonts to remain under this license does not apply
|
||||||
|
to any document created using the fonts or their derivatives.
|
||||||
|
|
||||||
|
DEFINITIONS
|
||||||
|
"Font Software" refers to the set of files released by the Copyright
|
||||||
|
Holder(s) under this license and clearly marked as such. This may
|
||||||
|
include source files, build scripts and documentation.
|
||||||
|
|
||||||
|
"Reserved Font Name" refers to any names specified as such after the
|
||||||
|
copyright statement(s).
|
||||||
|
|
||||||
|
"Original Version" refers to the collection of Font Software components as
|
||||||
|
distributed by the Copyright Holder(s).
|
||||||
|
|
||||||
|
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||||
|
or substituting -- in part or in whole -- any of the components of the
|
||||||
|
Original Version, by changing formats or by porting the Font Software to a
|
||||||
|
new environment.
|
||||||
|
|
||||||
|
"Author" refers to any designer, engineer, programmer, technical
|
||||||
|
writer or other person who contributed to the Font Software.
|
||||||
|
|
||||||
|
PERMISSION & CONDITIONS
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||||
|
redistribute, and sell modified and unmodified copies of the Font
|
||||||
|
Software, subject to the following conditions:
|
||||||
|
|
||||||
|
1) Neither the Font Software nor any of its individual components,
|
||||||
|
in Original or Modified Versions, may be sold by itself.
|
||||||
|
|
||||||
|
2) Original or Modified Versions of the Font Software may be bundled,
|
||||||
|
redistributed and/or sold with any software, provided that each copy
|
||||||
|
contains the above copyright notice and this license. These can be
|
||||||
|
included either as stand-alone text files, human-readable headers or
|
||||||
|
in the appropriate machine-readable metadata fields within text or
|
||||||
|
binary files as long as those fields can be easily viewed by the user.
|
||||||
|
|
||||||
|
3) No Modified Version of the Font Software may use the Reserved Font
|
||||||
|
Name(s) unless explicit written permission is granted by the corresponding
|
||||||
|
Copyright Holder. This restriction only applies to the primary font name as
|
||||||
|
presented to the users.
|
||||||
|
|
||||||
|
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||||
|
Software shall not be used to promote, endorse or advertise any
|
||||||
|
Modified Version, except to acknowledge the contribution(s) of the
|
||||||
|
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||||
|
permission.
|
||||||
|
|
||||||
|
5) The Font Software, modified or unmodified, in part or in whole,
|
||||||
|
must be distributed entirely under this license, and must not be
|
||||||
|
distributed under any other license. The requirement for fonts to
|
||||||
|
remain under this license does not apply to any document created
|
||||||
|
using the Font Software.
|
||||||
|
|
||||||
|
TERMINATION
|
||||||
|
This license becomes null and void if any of the above conditions are
|
||||||
|
not met.
|
||||||
|
|
||||||
|
DISCLAIMER
|
||||||
|
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||||
|
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||||
|
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||||
|
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
Copyright 2015, Microsoft Corporation (www.microsoft.com), with Reserved Font Name Selawik. All Rights Reserved. Selawik is a trademark of Microsoft Corporation in the United States and/or other countries.
|
||||||
|
|
||||||
|
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||||
|
This license is copied below, and is also available with a FAQ at:
|
||||||
|
http://scripts.sil.org/OFL
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||||
|
-----------------------------------------------------------
|
||||||
|
PREAMBLE
|
||||||
|
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||||
|
development of collaborative font projects, to support the font creation
|
||||||
|
efforts of academic and linguistic communities, and to provide a free and
|
||||||
|
open framework in which fonts may be shared and improved in partnership
|
||||||
|
with others.
|
||||||
|
|
||||||
|
The OFL allows the licensed fonts to be used, studied, modified and
|
||||||
|
redistributed freely as long as they are not sold by themselves. The
|
||||||
|
fonts, including any derivative works, can be bundled, embedded,
|
||||||
|
redistributed and/or sold with any software provided that any reserved
|
||||||
|
names are not used by derivative works. The fonts and derivatives,
|
||||||
|
however, cannot be released under any other type of license. The
|
||||||
|
requirement for fonts to remain under this license does not apply
|
||||||
|
to any document created using the fonts or their derivatives.
|
||||||
|
|
||||||
|
DEFINITIONS
|
||||||
|
"Font Software" refers to the set of files released by the Copyright
|
||||||
|
Holder(s) under this license and clearly marked as such. This may
|
||||||
|
include source files, build scripts and documentation.
|
||||||
|
|
||||||
|
"Reserved Font Name" refers to any names specified as such after the
|
||||||
|
copyright statement(s).
|
||||||
|
|
||||||
|
"Original Version" refers to the collection of Font Software components as
|
||||||
|
distributed by the Copyright Holder(s).
|
||||||
|
|
||||||
|
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||||
|
or substituting -- in part or in whole -- any of the components of the
|
||||||
|
Original Version, by changing formats or by porting the Font Software to a
|
||||||
|
new environment.
|
||||||
|
|
||||||
|
"Author" refers to any designer, engineer, programmer, technical
|
||||||
|
writer or other person who contributed to the Font Software.
|
||||||
|
|
||||||
|
PERMISSION & CONDITIONS
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||||
|
redistribute, and sell modified and unmodified copies of the Font
|
||||||
|
Software, subject to the following conditions:
|
||||||
|
|
||||||
|
1) Neither the Font Software nor any of its individual components,
|
||||||
|
in Original or Modified Versions, may be sold by itself.
|
||||||
|
|
||||||
|
2) Original or Modified Versions of the Font Software may be bundled,
|
||||||
|
redistributed and/or sold with any software, provided that each copy
|
||||||
|
contains the above copyright notice and this license. These can be
|
||||||
|
included either as stand-alone text files, human-readable headers or
|
||||||
|
in the appropriate machine-readable metadata fields within text or
|
||||||
|
binary files as long as those fields can be easily viewed by the user.
|
||||||
|
|
||||||
|
3) No Modified Version of the Font Software may use the Reserved Font
|
||||||
|
Name(s) unless explicit written permission is granted by the corresponding
|
||||||
|
Copyright Holder. This restriction only applies to the primary font name as
|
||||||
|
presented to the users.
|
||||||
|
|
||||||
|
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||||
|
Software shall not be used to promote, endorse or advertise any
|
||||||
|
Modified Version, except to acknowledge the contribution(s) of the
|
||||||
|
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||||
|
permission.
|
||||||
|
|
||||||
|
5) The Font Software, modified or unmodified, in part or in whole,
|
||||||
|
must be distributed entirely under this license, and must not be
|
||||||
|
distributed under any other license. The requirement for fonts to
|
||||||
|
remain under this license does not apply to any document created
|
||||||
|
using the Font Software.
|
||||||
|
|
||||||
|
TERMINATION
|
||||||
|
This license becomes null and void if any of the above conditions are
|
||||||
|
not met.
|
||||||
|
|
||||||
|
DISCLAIMER
|
||||||
|
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||||
|
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||||
|
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||||
|
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -8,6 +8,12 @@
|
|||||||
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
|
<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Include="DocumentFonts/*.ttf;DocumentFonts/*.txt" LogicalName="CvFonts.%(Filename)%(Extension)" />
|
||||||
|
<Content Include="DocumentFonts/*.txt" CopyToOutputDirectory="PreserveNewest" />
|
||||||
|
<Content Update="DocumentFonts/provenance.json" CopyToOutputDirectory="PreserveNewest" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.14" />
|
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.14" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="9.0.14" />
|
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="9.0.14" />
|
||||||
|
|||||||
@@ -0,0 +1,51 @@
|
|||||||
|
using System.Reflection;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace JobTrackerApi.Services;
|
||||||
|
|
||||||
|
// Self-contained document fonts keep local-file PDF export and srcDoc preview on the same metrics.
|
||||||
|
internal static class CvDocumentFonts
|
||||||
|
{
|
||||||
|
private static readonly Dictionary<string, string> Styles = new()
|
||||||
|
{
|
||||||
|
["Selawik"] = Faces("selawik", ("selawk.ttf", "400", "normal"), ("selawksb.ttf", "600", "normal"), ("selawkb.ttf", "700", "normal")),
|
||||||
|
["Arimo"] = Faces("arimo", ("Arimo-Regular.ttf", "400", "normal"), ("Arimo-Italic.ttf", "400", "italic"), ("Arimo-Bold.ttf", "700", "normal"), ("Arimo-BoldItalic.ttf", "700", "italic")),
|
||||||
|
["Gelasio"] = Faces("gelasio", ("Gelasio-Regular.ttf", "400", "normal"), ("Gelasio-Italic.ttf", "400", "italic"), ("Gelasio-SemiBold.ttf", "600", "normal"), ("Gelasio-SemiBoldItalic.ttf", "600", "italic"), ("Gelasio-Bold.ttf", "700", "normal"), ("Gelasio-BoldItalic.ttf", "700", "italic")),
|
||||||
|
["Roboto"] = Faces("roboto", ("Roboto-Regular.ttf", "400", "normal"), ("Roboto-Italic.ttf", "400", "italic"), ("Roboto-Medium.ttf", "500", "normal"), ("Roboto-MediumItalic.ttf", "500", "italic"), ("Roboto-Bold.ttf", "700", "normal"), ("Roboto-BoldItalic.ttf", "700", "italic")),
|
||||||
|
["Poppins"] = Faces("poppins", ("Poppins-Regular.ttf", "400", "normal"), ("Poppins-Italic.ttf", "400", "italic"), ("Poppins-SemiBold.ttf", "600", "normal"), ("Poppins-SemiBoldItalic.ttf", "600", "italic"), ("Poppins-Bold.ttf", "700", "normal"), ("Poppins-BoldItalic.ttf", "700", "italic")),
|
||||||
|
["Roboto Mono"] = Faces("robotomono", ("RobotoMono-Regular.ttf", "400", "normal"), ("RobotoMono-Italic.ttf", "400", "italic"), ("RobotoMono-Medium.ttf", "500", "normal"), ("RobotoMono-MediumItalic.ttf", "500", "italic"), ("RobotoMono-Bold.ttf", "700", "normal"), ("RobotoMono-BoldItalic.ttf", "700", "italic")),
|
||||||
|
};
|
||||||
|
|
||||||
|
internal static string Family(string stack) => stack.TrimStart() switch
|
||||||
|
{
|
||||||
|
var s when s.StartsWith("Georgia", StringComparison.Ordinal) => "Gelasio",
|
||||||
|
var s when s.StartsWith("'Roboto Mono'", StringComparison.Ordinal) || s.StartsWith("Consolas", StringComparison.Ordinal) => "Roboto Mono",
|
||||||
|
var s when s.StartsWith("'Roboto'", StringComparison.Ordinal) => "Roboto",
|
||||||
|
var s when s.StartsWith("'Poppins'", StringComparison.Ordinal) => "Poppins",
|
||||||
|
var s when s.StartsWith("'Segoe UI'", StringComparison.Ordinal) => "Selawik",
|
||||||
|
_ => "Arimo",
|
||||||
|
};
|
||||||
|
|
||||||
|
internal static string Stack(string original) => $"'{Family(original)}', {original}";
|
||||||
|
|
||||||
|
internal static string Embed(params string[] stacks) => string.Concat(stacks.Select(Family).Distinct().Select(family => Styles[family]));
|
||||||
|
|
||||||
|
private static string Faces(string family, params (string File, string Weight, string Style)[] faces)
|
||||||
|
{
|
||||||
|
var names = new Dictionary<string, string> { ["selawik"] = "Selawik", ["arimo"] = "Arimo", ["gelasio"] = "Gelasio", ["roboto"] = "Roboto", ["poppins"] = "Poppins", ["robotomono"] = "Roboto Mono" };
|
||||||
|
var css = new StringBuilder();
|
||||||
|
using var license = new StreamReader(Resource(family + ".OFL.txt"));
|
||||||
|
css.Append("/*\n").Append(license.ReadToEnd()).Append("\n*/\n");
|
||||||
|
foreach (var face in faces)
|
||||||
|
{
|
||||||
|
using var stream = Resource(face.File);
|
||||||
|
using var bytes = new MemoryStream();
|
||||||
|
stream.CopyTo(bytes);
|
||||||
|
css.Append($"@font-face{{font-family:'{names[family]}';font-style:{face.Style};font-weight:{face.Weight};font-display:block;src:url(data:font/ttf;base64,{Convert.ToBase64String(bytes.ToArray())}) format('truetype');}}\n");
|
||||||
|
}
|
||||||
|
return css.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Stream Resource(string name) => typeof(CvDocumentFonts).Assembly.GetManifestResourceStream("CvFonts." + name)
|
||||||
|
?? throw new InvalidOperationException("Required document font resource is missing: " + name);
|
||||||
|
}
|
||||||
@@ -43,7 +43,8 @@ public sealed class ThemedCvRenderer : IThemedCvRenderer
|
|||||||
? SplitColumns(model, theme, sidebarSections, settings)
|
? SplitColumns(model, theme, sidebarSections, settings)
|
||||||
: (string.Empty, RenderSections(model.Sections, theme, settings));
|
: (string.Empty, RenderSections(model.Sections, theme, settings));
|
||||||
|
|
||||||
var css = BuildCss(theme, settings, accent, headerInk, ink, muted, paper, headingColor, headingFont, bodyFont, headingStyle, density, pageDims, layout, twoColumn);
|
var css = CvDocumentFonts.Embed(headingFont, bodyFont, theme.UtilityFont)
|
||||||
|
+ BuildCss(theme, settings, accent, headerInk, ink, muted, paper, headingColor, CvDocumentFonts.Stack(headingFont), CvDocumentFonts.Stack(bodyFont), headingStyle, density, pageDims, layout, twoColumn);
|
||||||
var header = RenderHeader(model, theme, showIcons, twoColumn, headerStyle);
|
var header = RenderHeader(model, theme, showIcons, twoColumn, headerStyle);
|
||||||
var body = layout switch
|
var body = layout switch
|
||||||
{
|
{
|
||||||
@@ -255,7 +256,7 @@ public sealed class ThemedCvRenderer : IThemedCvRenderer
|
|||||||
.header-plain{{border-bottom:2px solid {accent};}}";
|
.header-plain{{border-bottom:2px solid {accent};}}";
|
||||||
|
|
||||||
var numberedSections = t.NumberSections
|
var numberedSections = t.NumberSections
|
||||||
? $@".main{{counter-reset:cv-section;}} .main>.section>.section-title{{counter-increment:cv-section;font-family:{t.UtilityFont};font-weight:600;}} .main>.section>.section-title::before{{content:counter(cv-section,decimal-leading-zero) ' — ';color:var(--cv-accent-color);}}"
|
? $@".main{{counter-reset:cv-section;}} .main>.section>.section-title{{counter-increment:cv-section;font-family:{CvDocumentFonts.Stack(t.UtilityFont)};font-weight:600;}} .main>.section>.section-title::before{{content:counter(cv-section,decimal-leading-zero) ' — ';color:var(--cv-accent-color);}}"
|
||||||
: string.Empty;
|
: string.Empty;
|
||||||
|
|
||||||
return $@"
|
return $@"
|
||||||
@@ -304,7 +305,7 @@ h1,h2{{font-family:{headingFont};}}
|
|||||||
.paragraphs p{{margin:0 0 {F(1.8 * density)}mm;white-space:pre-line;}}
|
.paragraphs p{{margin:0 0 {F(1.8 * density)}mm;white-space:pre-line;}}
|
||||||
.skill-groups{{display:grid;gap:{F(1.7 * density)}mm;}}
|
.skill-groups{{display:grid;gap:{F(1.7 * density)}mm;}}
|
||||||
.skill-group{{display:grid;grid-template-columns:minmax(24mm,.3fr) minmax(0,1fr);gap:3mm;break-inside:avoid-page;page-break-inside:avoid;}}
|
.skill-group{{display:grid;grid-template-columns:minmax(24mm,.3fr) minmax(0,1fr);gap:3mm;break-inside:avoid-page;page-break-inside:avoid;}}
|
||||||
.skill-group-name{{font-family:{t.UtilityFont};font-weight:700;color:var(--cv-accent-color);overflow-wrap:anywhere;}}
|
.skill-group-name{{font-family:{CvDocumentFonts.Stack(t.UtilityFont)};font-weight:700;color:var(--cv-accent-color);overflow-wrap:anywhere;}}
|
||||||
.skill-group-items{{display:flex;flex-wrap:wrap;gap:.8mm 3mm;list-style:none;margin:0;padding:0;}}
|
.skill-group-items{{display:flex;flex-wrap:wrap;gap:.8mm 3mm;list-style:none;margin:0;padding:0;}}
|
||||||
.skill-group-items li{{overflow-wrap:anywhere;}}
|
.skill-group-items li{{overflow-wrap:anywhere;}}
|
||||||
.entry{{margin-bottom:{entryGap}mm;}}
|
.entry{{margin-bottom:{entryGap}mm;}}
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# Portable CV document fonts
|
||||||
|
|
||||||
|
The shared ThemedCvRenderer embeds unmodified licensed Open Font License TTF assets and full license texts directly into each generated document HTML. It includes only the families used by the selected heading/body/utility stacks. Preview srcDoc and the local-file Chromium PDF command therefore consume identical font bytes without external font requests, installed proprietary fonts or platform fallback races. The existing preview already awaits document.fonts.ready.
|
||||||
|
|
||||||
|
Stored settings/stack strings, null inheritance, Career content, theme IDs, revision history and frozen previously generated PDFs are unchanged. Effective rendering is now explicit: Segoe UI stacks use Selawik; Arial/Helvetica/Helvetica Neue use Arimo; Georgia uses Gelasio; Roboto and Poppins use their own fonts; utility Consolas/Roboto Mono uses Roboto Mono. Legacy Helvetica Neue already fell back to Arial on the established Windows environment. Distinct supported sans/serif/decorative/mono choices remain; UI help discloses replacements. Selawik does not promise exact Segoe UI kerning; Microsoft documents that limitation. Existing templates/settings are preserved, but newly rendered glyph shapes/metrics may intentionally differ from historical OS fallback. Historical PDF bytes are not regenerated or deleted.
|
||||||
|
|
||||||
|
All31 font files are unmodified originals. Poppins Google Fonts source commit: e7db6ca603fd4862010383ff17ffd6cc4ffac1c0. Arimo static source4a6255f269916ae7ad3fc2706b0935e7621396b8; Gelasio7ab20e7e5c42791e603b9ee3201a0b49849cfdb2; Roboto Mono895ec691990d041dd727c7b5afa3ce56525d98e6; Roboto static release3.016/source5166f3d07889bf7d3732fb72e09623d7e52f862b. Selawik release1.01 and license source commit89362e84731d1f5777fa078fd4d5ebbd339e4378. Source URLs, SHA256 identities and copyright/license files accompany JobTrackerApi/DocumentFonts. No proprietary OS font is copied. Fonts/licenses are embedded resources; standalone licenses/provenance are also published. Selawik supplies regular/semibold/bold, with browser synthesized italic; the other families contain actual regular/italic weight variants.
|
||||||
|
|
||||||
|
Controlled identical-HTML Arimo experiment: Windows Chromium151 and Linux156 both emit4 pages with identical text order,1560 words, maximum word position delta0.023mm. This isolates font substitution as a material cause for that fixture, not proof all24 are fixed. Six self-contained-document regressions failed before implementation. A seventh static-outline guard failed on variable fonts; the complete1130-case backend successor passes after upstream static originals replace them. Current full Linux/Windows corpus results will be recorded separately.
|
||||||
|
|
||||||
|
The original scripts/verify-cv-fidelity.py and24 fixture data are unchanged. It dynamically requires exact page count per live preview, marker/content presence, physical size, positions, font sizes, safe areas and colors. The existing supplemental collector also requires historical36+24 totals and exact eight settings-state membership. It is reused unchanged; no new collector or relaxed expected totals is shipped. Font-related changes are reported in before/after evidence, never hidden by editing snapshots.
|
||||||
|
|
||||||
|
Sources: https://github.com/microsoft/Selawik ; https://github.com/microsoft/Selawik/blob/master/LICENSE.txt ; https://github.com/googlefonts/Arimo ; https://github.com/SorkinType/Gelasio ; immutable Google Fonts source and bundled OFL notices.
|
||||||
|
|
||||||
|
The first embedded-variable trial resolved page/wrapping/marker drift, retaining36+24 pages, but Chromium156 emitted Type3 descriptors without FontBBox/Ascent/Descent for those assets. The unchanged oracle correctly retained unsafe inferred glyph-bound failures (8/16+0/8 passed). Controlled static Arimo emits Type0 and correct header glyph top16.6109mm instead of the variable descriptor fallback14.8167mm. The fix uses upstream static originals, not locally converted/renamed fonts or looser safe-area tolerance. All trial outputs and RED cases are retained.
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# P9-REMED-02 execution ledger
|
||||||
|
|
||||||
|
Spec: user mission, 24 October 2026. Baseline3727a723e8d0d9066ef3a0a4eed3e5313ff9cc28;
|
||||||
|
branch `fix/p9-pdf-security-requalification`. Main remains5f835e5.
|
||||||
|
|
||||||
|
1. P9-PDF-00: reproduce all24 original Linux fixture outputs and unchanged oracle; inventory runtime/fonts/locale/geometry.
|
||||||
|
2. P9-PDF-01/02: trace canonical/variant/model/render/preview/export owners; isolate causes, then minimal proven fixes with RED/GREEN. Preserve content/revisions/settings and legal font distribution.
|
||||||
|
3. P9-SEC-00/01: fresh per-advisory evidence, reachability/patch compatibility; bounded dependency remediation, no owner risk acceptance or model download.
|
||||||
|
4. P9-CI-00: read-only effective runner/service isolation assessment and exact operator prerequisites; no live changes.
|
||||||
|
5. P9-REG-00: freeze final source, full affected/backend/frontend/browser/contracts/MariaDB/sidecar/PDF/security/preservation successors and independent final review.
|
||||||
|
6. Publish dated addendum, blocker decisions and precise Phase9/CV-UX entry conditions; normal checkpoint pushes with direct equality.
|
||||||
|
|
||||||
|
Ruling: reuse the verified clean existing checkout on the explicitly requested dedicated branch; preserve existing local artifacts and dev data. No new worktree requested. Baseline tests deliberately contain known PDF/security failures; reproduction is authorized rather than an unexplained green-baseline requirement.
|
||||||
|
Ruling: parallel independent security and CI investigation under dispatching-parallel-agents; root owns rendering and serial runtime qualification. Workers have exclusive file ownership and cannot commit or touch production.
|
||||||
|
Pre-flight: PDF runtime/config changes invalidate affected PDF/browser/backend/build evidence; Python changes require lock/startup/parser/security/sidecar successors. CI remains read-only and cannot confer hosted PASS from local tests.
|
||||||
|
|
||||||
|
All historical evidence is immutable. New raw outputs: `.artifacts/p9-remed-02/`. No Phase10, CV-UX-01, CV-IMPORT-01, production access, destructive dev reset or owner security waiver.
|
||||||
|
|
||||||
|
P9-PDF-00 complete: baseline realLinux5producer cases PASS, unchanged oracle9/16+4/8 (same11failedfixtures),65PDF/60previewpages. Runtime image5a1c1e8,Debian12,Chromium156/.NET9.0.21; all51startupmigrations and cleanup confirmed. One preflight was attempted before Compose health completed and refused before schema creation; no hidden test retry.
|
||||||
|
P9-CI-00 assessment complete: fresh baseline hosted853 still hostnetwork/socket, firstgateBLOCKED; operator isolation prerequisites remain. No safe workflow-only recovery.
|
||||||
|
Ruling: font substitution hypothesis receives a controlled sameHTML experiment before application changes. Distinct user font choices, persisted stack strings and null inheritance must remain. Packaged open replacements may intentionally change platform-dependent glyph metrics; record those visual changes and keep original oracle and historical evidence unchanged.
|
||||||
|
|
||||||
|
P9-SEC-00/01 bounded checkpoint ready: exact5pins changed among49; 58/58 completeWindows sidecar, actualHTTP startup+3uploads andLinux3.12 parser-only2regression/3decode PASS.65/109advisorygroups remediated;44remain individually assessed, modelruntimeBLOCKED; no owner risk acceptance.
|
||||||
|
P9-PDF-02 first implementation:17unmodified OFL fonts/6families embedded only as used by sharedThemed renderer; settings/Career/revisions/legacyfrozen artifacts untouched.6newself-contained-font tests RED6/6 then fullbackend1129/1129PASS. Dockerfirstbuildfailed duplicateContent packaging, successorfix usesUpdateforSDKdefaultJSON; successfulimagee403cd9. StaticbuildPASS nativeexit0 (outerlog-displaycommand hitcp1252 aftersuccess, retained). Full24focusedLinuxrun underway.
|
||||||
|
|
||||||
|
Security checkpoint0554e27af1f2695767bde18d68e776ccdf76d5cd normallypushed; directremoteequalityverified.
|
||||||
|
PDF font trial: embeddedvariablefonts makeall24preview/exportpagesagree36+24 and positionalmarkersalign, but originaloracle8/16+0/8FAIL becauseChromium156emitsType3variablefontdescriptorsmissingFontBBox/Ascent/Descent. Imageinspectiondefaultminimalshowsheaderinsidephysicalmargin; extractorassignedtop14.8167mm, notactualglyph16mm. StaticupstreamArimo controlledexperiment emitsType0 withpropermetrics/top16.6109mm. Nooracle/tolerancechanges. Addedstatic-outlineguardRED1/1; replaceonlyvendoredvariableassetswithupstreamunmodifiedstaticreleases. Completebackend1130successor and staticLinuxfull24run underway. VariabletrialandbothREDreportsretained.
|
||||||
|
|
||||||
|
Review ruling: discard the uncommitted experimental dynamic PDF collector and its2offlineguards; reuse prior exact collector unchanged, including8settings-state membership and historical36+24 totals. The static font fix must satisfy that stronger existing gate; no reference/tolerance change.
|
||||||
|
|
||||||
|
P9-PDF-02/03 staticcheckpoint: Linux5producerPASS; unchangedoriginaloracle16/16+8/8PASS,36+24pages,zero inputdrift. OriginaloracleSHA25664f82e622cc11483c33307d987e969f6cf27f82ab6bdbd72c2aeb1bfbceade87 unchanged. Metadatareviewclosed37/37font+licensehasheswithimmutableURLs; .gitattributespreservesasset/licensebytesacrossOS. Fullbackend1130PASS. Noexpectations/tolerances/referencechanges. CompleteWindows/broadregressionstillpending.
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
"""Reuse the qualified isolated renderer lifecycle; retain each remediation attempt separately."""
|
||||||
|
import importlib.util
|
||||||
|
import re
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
HERE = Path(__file__).resolve().parent
|
||||||
|
spec = importlib.util.spec_from_file_location('qualified_linux_runner', HERE.parent/'p9-requal-01/linux-run.py')
|
||||||
|
runner = importlib.util.module_from_spec(spec)
|
||||||
|
spec.loader.exec_module(runner)
|
||||||
|
|
||||||
|
if len(sys.argv) != 2 or not re.fullmatch(r'[a-z0-9-]+', sys.argv[1]):
|
||||||
|
raise SystemExit('Supply a unique lowercase attempt name; prior evidence is never overwritten.')
|
||||||
|
runner.OUT = runner.ROOT/'.artifacts/p9-remed-02'/sys.argv[1]/'linux'
|
||||||
|
if sys.argv[1] != 'baseline':
|
||||||
|
runner.IMAGE = 'jobtracker-p9-remed-api:fonts'
|
||||||
|
runner.VERSION = 'p9-remed-02-fonts'
|
||||||
|
runner.CONFIG = '../docs/redesign/phase-9/p9-remed-02/linux/playwright.config.ts'
|
||||||
|
runner.COMMIT = subprocess.check_output(['rtk','proxy','git','rev-parse','HEAD'],text=True).strip()
|
||||||
|
runner.main()
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
import { defineConfig } from '../../../../../job-tracker-ui/node_modules/@playwright/test';
|
||||||
|
import base from '../../../../../job-tracker-ui/playwright.config';
|
||||||
|
import path from 'node:path';
|
||||||
|
|
||||||
|
if (process.env.P9_REQUAL_LINUX_READY !== 'p9-remed-02-fonts') {
|
||||||
|
throw new Error('Use the isolated remediation runner and verified API identity.');
|
||||||
|
}
|
||||||
|
const servers = Array.isArray(base.webServer) ? base.webServer : [base.webServer!];
|
||||||
|
export default defineConfig({ ...base,
|
||||||
|
testDir: path.resolve('e2e'),
|
||||||
|
testMatch: ['cv-readiness.spec.ts', 'cv-settings-presentation.spec.ts'],
|
||||||
|
grep: /native preview\/PDF fidelity corpus|document controls preserve settings/,
|
||||||
|
workers: 1, retries: 0,
|
||||||
|
webServer: [{ ...servers[1], cwd: path.resolve(__dirname, '../../../../../job-tracker-ui'), reuseExistingServer: false }],
|
||||||
|
metadata: { linuxApiIdentity: process.env.P9_REQUAL_LINUX_READY, mariaDbVersion: '12.2.2' },
|
||||||
|
});
|
||||||
@@ -0,0 +1,154 @@
|
|||||||
|
{
|
||||||
|
"status": "PASS",
|
||||||
|
"platform": "linux",
|
||||||
|
"oracle": "E:\\Storage\\Projects\\Active\\Job tracker\\scripts\\verify-cv-fidelity.py",
|
||||||
|
"inputs": {
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\scripts\\verify-cv-fidelity.py": "64f82e622cc11483c33307d987e969f6cf27f82ab6bdbd72c2aeb1bfbceade87",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\measurements.json": "3a791730b24c787cd59e31ad634b0e5cdbf612bfd484150e0c74afea59f16334",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\light-en-measurements.json": "481354dc2a6cac26ff8015b090baaf427085af2f1a0de0ad34cef4f7c0ca1804",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\light-nb-measurements.json": "0352f70022c6466f015fab648e64b869692f7a16c7b9aaf1628ee31710f182a7",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\dark-en-measurements.json": "55fff072566edc6751e246796b0f09f22841c4b6b0dcc740033e03f329d69213",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\dark-nb-measurements.json": "0a1c0522ee1b56e77881c7fbfdd564a3c5f02d30b12b6e9f86429d61575cd04e",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-modern\\export.pdf": "2977b24522991305189e0a42156e9f07ff249f40ca4e6fdc5b69515d69d3b0f8",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-modern\\render.html": "1ef61e665d770ad203bb4204f13233817c16a29e7e2e7d2f6a7e1b1c2900cbe6",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-modern\\preview-1.png": "7fc8d0e1c842bb9b69e601736945a0d5cc426e019edb6f64e2f4715aa34ea338",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-minimal\\export.pdf": "5103e73ac1fced548d998292316d661423ace1a260288c428b7b331d0340068e",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-minimal\\render.html": "7e14aaa6cfeff11dfdc042f4f78fedcb6c250189b9110243a012455a0545034f",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-minimal\\preview-1.png": "e5107f58dcfb1ca4351a44f3ed43574b3e385e7997f5624140b83b16e4707694",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-executive\\export.pdf": "54c9741460084a7ecc67ce77998b56ff6fed230e620ef92d80ab5adc5c0a6148",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-executive\\render.html": "01f8b8b28237082790e1b09c9441583513bb02e8d0fcaac3728c30294fe70497",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-executive\\preview-1.png": "3b4666e4409d38f6a6c2bcbce007f55d3956b50b15aa69e07eeb334c264a65b4",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-technical\\export.pdf": "113db9e795c8006b68cf40c5897035ebda01a12a15dbbfd43fd20388a664c4e8",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-technical\\render.html": "0bed668ad993e83db84a954d9b96c11f187a617e1947d74dd5d98ad6383ee6c8",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-technical\\preview-1.png": "30d1549b9eaa4e42032384393aab05115cfeb57f47b77f17674624b093a1eabb",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-ats-classic\\export.pdf": "6389594610798c2114044905b2408c2dcf7c7b279fd7b07765f6f702e637db75",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-ats-classic\\render.html": "2dc532f839abc99e1d65f2f9fddd621a79704c40d6af08c377b66c72d0b670dd",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-ats-classic\\preview-1.png": "2e8d1a74bdee430ec63ac8ad3bd5803057c6175ab94ae2715d06042b0e0eb832",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-nordic\\export.pdf": "c838b7401e563a2dc29383dfbe87906e6d28de68a7eb4a19b403597f2a1550d0",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-nordic\\render.html": "a95e9f090c014fb4df79c64eb425ed6b487434574d8f0aa6e0e61c021554e2a6",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-nordic\\preview-1.png": "f2d16a2d1f220a78dca82be238ca49bcc1ac0027c57eae2f3ea43646ab18226c",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-elegant\\export.pdf": "b6d2e3b90fe46db47037906bda28fdb26afac67b19a49f80b2753cc06390959b",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-elegant\\render.html": "c9c8f4c8bd02fd4ea293b39af7d1c1f76b25cc4cfc509de8a9e93c645957aae9",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-elegant\\preview-1.png": "0eb3cff3a98719ebccc9a308a31dbd1331d4470ce61ed48ccaa3defe2ed9460c",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-creative\\export.pdf": "2fc1f223f1cc6b3b7759d63f3d27519f5350b71950cb94f9d707ac4ee613e0db",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-creative\\render.html": "16c3a0a6998f9e20a5ee60af871c32c52a3d8f37c68c3c95ebd75adac724291b",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-creative\\preview-1.png": "a6dd36020205f21aa520f3b92efcd16c5c296c8fdda685b08b2805245f02c0aa",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-code\\export.pdf": "5ae277ca2729d7bcd4a25d91c00c53b1cf363c53c15e2bc06ada9603d2943249",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-code\\render.html": "be9b293c706677b65cc8290592ea46ec7c0daf8f842eb52eeca161dd6de13bf7",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\default-code\\preview-1.png": "d75addf0d0942e1da9ac7955631ddf601ec845d94122e35ded36d668d2a06846",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\long-en-minimal\\export.pdf": "e085bae1ba64a697a2c30abfc94d759e2392a143547122bfe6c671fa17895e38",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\long-en-minimal\\render.html": "aff3a2d86bb9a734e1b9303b8662ca458a3ce7ac928fafe937d9aed1e913f168",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\long-en-minimal\\preview-1.png": "1fa571e297e4b4ea0f0ee5f8f7e148c4a573c8b34a270a882bd6eb115530acf9",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\long-en-minimal\\preview-2.png": "c5971a58d1faa4b64ad6848a4b2a51c26ff134a6d4232a97d5b056e7ba2f046f",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\long-en-minimal\\preview-3.png": "98d8775b9771b4510d205c677c43476a4dde559b7f37324ae9336ce7d6cd927e",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\long-en-minimal\\preview-4.png": "7a763efffed235d82469641fd18faa6415ddd40f0d616a9caa2d167e1c3a4f3b",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\long-nb-code\\export.pdf": "dc6d15460a8880c888981a6cae538416e314ad9bafa7c043472ef22e1cb90b58",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\long-nb-code\\render.html": "069928476217951c2f331417391067f962a7d21e7372c4bd3a14a40af5e92d98",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\long-nb-code\\preview-1.png": "5db127828f4dd71623d842bd536f92024321339153e785a5d2f83febdbc185be",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\long-nb-code\\preview-2.png": "e9dffc37afd39ee5537fb8a370f6e0e1de84ae671b66c8051e07b726009553ef",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\long-nb-code\\preview-3.png": "9ba53447b64683ac676607faa0cedf7631d94af3d3738cbf50c9acce0927979b",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\long-nb-code\\preview-4.png": "a34ca1f2d63d96da49bdf9aebe27edfe9c3e63bcca0cc9ef626313c3c080b47a",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\compact-8mm-letter\\export.pdf": "df84b00541760204d9a44d624a2ba407039fd87179648ff5c9193b17d9a20628",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\compact-8mm-letter\\render.html": "02f5838a3e998378e1bbff7eb43990a7ce019b0ac6a9205bf123f8dbc2ceb5ff",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\compact-8mm-letter\\preview-1.png": "9ab3d1359db56f36ce153c79601f48a79e87d6317de080f2538767b0902caa6c",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\compact-8mm-letter\\preview-2.png": "842b9fce6cc1da52a955ef0a65967531cbc1dae04ca1ae2665aef6f1f6a30407",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\compact-8mm-letter\\preview-3.png": "b6d635f55ed515d8254557033e234b0578e5c2f6e52725179af01929878d2689",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\compact-8mm-letter\\preview-4.png": "0dff08db37509f291eaf03ff3dda679b7fa0d801f32e6495416b9b4d04f5e9f8",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\roomy-28mm-nb\\export.pdf": "f609cc52307eebf7be06392abd3090fdf3b8787cbf4b3be8c4e91858dfa0fe18",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\roomy-28mm-nb\\render.html": "09122c75b9b4c9d4335df5c744af1e589b2e2daa154df729293489bb9fa8eda3",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\roomy-28mm-nb\\preview-1.png": "a84e5eca59523ad9b55910b8e5873dab765ad4b6f0e2e9e106f1836ede7b96d8",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\roomy-28mm-nb\\preview-2.png": "d0889ce39c7d6357c9eb45a2ec564561d33a2c33bd748b6fef69d219187d10dc",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\roomy-28mm-nb\\preview-3.png": "ab0f2d8d4d48660ac263618020716a11b1b7e5f3cf2ce02b41251a47a7424449",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\roomy-28mm-nb\\preview-4.png": "2772fc2f6dc8a8cf22621d2335d0bed518dec57c9d21c54c0af82de609195fe1",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\roomy-28mm-nb\\preview-5.png": "3265e407e716068533a2d6e3fdcc1933345506c955ad21dceef50445a5b17611",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\grid-and-bubbles\\export.pdf": "7d372bd6919abae65bb49bd79cdb76dd3da5e35aebe82b64822b20140a69a8fb",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\grid-and-bubbles\\render.html": "1727366725974f4790cbcf8685eda8f303ea907658f528bf6a544abbc844f863",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\grid-and-bubbles\\preview-1.png": "b0dab0ed7fcc7da4fc04d89bbad7abea20d1f65e8010afac061cd4a9b57005ee",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\long-sidebar-nb\\export.pdf": "6e6f312c5cbbf1e2931b9a562e07db3b04647fcb258fadd46839d3efaaa97081",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\long-sidebar-nb\\render.html": "adfc9f8ce5f545b916e234b6c26ccd3d004237731ab556f62775610be50775b7",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\long-sidebar-nb\\preview-1.png": "802d6cf3eb436e776aa432b939f9860457479fd41977675169307cee53aaf34e",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\long-sidebar-nb\\preview-2.png": "a68325ce6d35ad1ee19043bb41ddb1cb9b842a67c6012b8dd6978e0d60bba867",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\long-sidebar-nb\\preview-3.png": "0a3764a10feed1b4be783556cb835941046f710b9d7edf834e89ca5db0e51d9c",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\long-sidebar-nb\\preview-4.png": "02576a1a6c7adda4a785e3d666e5468c34b520bc1430d7db553188298e28b116",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\long-sidebar-nb\\preview-5.png": "894f75ab642d48f915f397071742cafc13ae89a32a99ddc57bff969b8e8dc314",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\unbreakable-and-boundary\\export.pdf": "6ea562bf07608adb6596db7cf8a15ec5e6713a9cfddc83f0545d165f67b18f9f",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\unbreakable-and-boundary\\render.html": "d7f5b00fa4545e8e2f3259637d6c80d8342358778ce5f6a3f536ded539a31ebe",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\unbreakable-and-boundary\\preview-1.png": "4a605a71e96f171a274daf5b21a865db0d3ecb5e875be2fee38e6d1bb3709e96",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\unbreakable-and-boundary\\preview-2.png": "fc9b3047a72b4dea058bd96e66e65fd924b9495be5bcec5f9b105f8516d09df2",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\unbreakable-and-boundary\\preview-3.png": "39982ee7d8aae237eb0e692fbd2f7654ec5de4770ed3df9f8c3e2bb49b9f4ce4",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\fidelity\\unbreakable-and-boundary\\preview-4.png": "da9fd469e39bfdeb00f030b272e2ec64f0b86e040ca11343cb4c498ee6fbb9db",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\light-en-before\\export.pdf": "d208460479fce915e1fc9d72817b8278c7624b7ec3bbb3c00de39e63a5a983d2",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\light-en-before\\render.html": "5d973ac8b09578f74077e8b0aee3ee94b05ada69b7dd52f50326b9b6b1296224",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\light-en-before\\preview-1.png": "d59f779f5f8d01720dd595cd17132788add086474646bb961b371f198832b975",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\light-en-before\\preview-2.png": "d1caaf6b90df5ad6f98370bca92b73b68520070770b6b6c6d1b2ff27ee066886",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\light-en-before\\preview-3.png": "b44ec6b0c6aaf106524087967df4f32f9d516b17ee4fc0e96f247cf4d22175a3",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\light-en-after\\export.pdf": "bb468f2a6cfdcc2c8d5e70b4ecd8951337dfc5f1fbde25443c3b1b4243d80e0a",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\light-en-after\\render.html": "1f0e0f1fd3b216a3138e744b713d5535d3da3bf8e9fdec5017d32661bf6b22fa",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\light-en-after\\preview-1.png": "41fb4784c88a648df9e059dfb98cab36fe4c000b837e574c199ed9e721851d78",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\light-en-after\\preview-2.png": "58940504b1a69a473004b65752a8d70a43dd2ce34e090c6ce733a53f2fcfee9d",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\light-en-after\\preview-3.png": "2ef34f58fd83a5e556acbd86c4b66acb5b8ee8f1f8a0c86ef78cbdf25e041bb0",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\light-nb-before\\export.pdf": "f63b30d598f516f6394240e9bd27efa6895d19268c667e3cf8a1087b4249070b",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\light-nb-before\\render.html": "8b47194c61109769b69d4c78b4a15fa1f10ea0cc924837b70560322f1eb5fdd5",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\light-nb-before\\preview-1.png": "6fbfffed60c36b26c3ee4c145fb2dd9089226423c35628b933e7221b9f4d9698",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\light-nb-before\\preview-2.png": "138ac1635ab21099d479833674783885342c0329e665c3f85f4b64b6310cd5f1",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\light-nb-before\\preview-3.png": "467e1bc2afb5f65379b928e03b10e504eb6a8b6760a1b6c66f5d08147963ce4f",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\light-nb-after\\export.pdf": "b3f31bc12bf90064fe41430c77629e4ac2dee34d60a9716341038583e576d74a",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\light-nb-after\\render.html": "81f2dc82c94eea70a4d7d3383935a35621dae468ea61a339ef67e18fa423a2ba",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\light-nb-after\\preview-1.png": "fe80ae2f40c2cd6c80e275c4e26af7ddb0e1c9f34a4c182cca829f5599a4f716",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\light-nb-after\\preview-2.png": "8f682f6b3d4301ccff4ff02f79a142ef3274bde5d5420afb2d390d27203b8e9a",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\light-nb-after\\preview-3.png": "6cb70c8576a37b58f814383e8b4bb28b687f66f48ccf2ac7f55374f9cfae0eeb",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\dark-en-before\\export.pdf": "77419eb0394a9f31d1e09204320d23445c9eee5ad1e54400ff4fbd829cd6e792",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\dark-en-before\\render.html": "5d973ac8b09578f74077e8b0aee3ee94b05ada69b7dd52f50326b9b6b1296224",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\dark-en-before\\preview-1.png": "d59f779f5f8d01720dd595cd17132788add086474646bb961b371f198832b975",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\dark-en-before\\preview-2.png": "d1caaf6b90df5ad6f98370bca92b73b68520070770b6b6c6d1b2ff27ee066886",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\dark-en-before\\preview-3.png": "b44ec6b0c6aaf106524087967df4f32f9d516b17ee4fc0e96f247cf4d22175a3",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\dark-en-after\\export.pdf": "d03ac9004be639135c4bdb9ca5c90eb061c796f8c4eb80a3aa11bc83c16e2551",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\dark-en-after\\render.html": "1f0e0f1fd3b216a3138e744b713d5535d3da3bf8e9fdec5017d32661bf6b22fa",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\dark-en-after\\preview-1.png": "41fb4784c88a648df9e059dfb98cab36fe4c000b837e574c199ed9e721851d78",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\dark-en-after\\preview-2.png": "58940504b1a69a473004b65752a8d70a43dd2ce34e090c6ce733a53f2fcfee9d",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\dark-en-after\\preview-3.png": "2ef34f58fd83a5e556acbd86c4b66acb5b8ee8f1f8a0c86ef78cbdf25e041bb0",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\dark-nb-before\\export.pdf": "130c9cd79dcf79c51e1e94ce1f14b600847995452c60fba3f530a89af6bc0f92",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\dark-nb-before\\render.html": "8b47194c61109769b69d4c78b4a15fa1f10ea0cc924837b70560322f1eb5fdd5",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\dark-nb-before\\preview-1.png": "6fbfffed60c36b26c3ee4c145fb2dd9089226423c35628b933e7221b9f4d9698",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\dark-nb-before\\preview-2.png": "138ac1635ab21099d479833674783885342c0329e665c3f85f4b64b6310cd5f1",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\dark-nb-before\\preview-3.png": "467e1bc2afb5f65379b928e03b10e504eb6a8b6760a1b6c66f5d08147963ce4f",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\dark-nb-after\\export.pdf": "6539278e5a953eb93c2b3926b9d10c7c985e0908be50135fbf03751bb8afd9f5",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\dark-nb-after\\render.html": "81f2dc82c94eea70a4d7d3383935a35621dae468ea61a339ef67e18fa423a2ba",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\dark-nb-after\\preview-1.png": "fe80ae2f40c2cd6c80e275c4e26af7ddb0e1c9f34a4c182cca829f5599a4f716",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\dark-nb-after\\preview-2.png": "8f682f6b3d4301ccff4ff02f79a142ef3274bde5d5420afb2d390d27203b8e9a",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\p9-remed-02\\static-fonts\\linux\\settings-fidelity\\dark-nb-after\\preview-3.png": "6cb70c8576a37b58f814383e8b4bb28b687f66f48ccf2ac7f55374f9cfae0eeb"
|
||||||
|
},
|
||||||
|
"lanes": [
|
||||||
|
{
|
||||||
|
"lane": "fidelity",
|
||||||
|
"status": "PASS",
|
||||||
|
"command": [
|
||||||
|
"C:\\Users\\Connor\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||||
|
"-B",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\scripts\\verify-cv-fidelity.py",
|
||||||
|
".artifacts\\p9-remed-02\\static-fonts\\oracle\\fidelity"
|
||||||
|
],
|
||||||
|
"exitCode": 0,
|
||||||
|
"report": ".artifacts\\p9-remed-02\\static-fonts\\oracle\\fidelity\\fidelity-results.json",
|
||||||
|
"reportSha256": "9069cde36bb36f3e4861dc3b5a3a735dfaa1bf8cb5a029420a5b6a5ebd27affa",
|
||||||
|
"fixtures": 16,
|
||||||
|
"pdfPages": 36
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"lane": "settings-fidelity",
|
||||||
|
"status": "PASS",
|
||||||
|
"command": [
|
||||||
|
"C:\\Users\\Connor\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||||
|
"-B",
|
||||||
|
"E:\\Storage\\Projects\\Active\\Job tracker\\scripts\\verify-cv-fidelity.py",
|
||||||
|
".artifacts\\p9-remed-02\\static-fonts\\oracle\\settings-fidelity"
|
||||||
|
],
|
||||||
|
"exitCode": 0,
|
||||||
|
"report": ".artifacts\\p9-remed-02\\static-fonts\\oracle\\settings-fidelity\\fidelity-results.json",
|
||||||
|
"reportSha256": "9466641749c85003e2e885a3ea626c3390e0a38ebf108e1190ff8ac25a666568",
|
||||||
|
"fixtures": 8,
|
||||||
|
"pdfPages": 24
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"inputDrift": []
|
||||||
|
}
|
||||||
@@ -8,6 +8,8 @@ IMAGE = 'jobtracker-p9-requal-api:security-check'
|
|||||||
DB = 'jobtracker-it-p9-requal-mariadb-test-1'
|
DB = 'jobtracker-it-p9-requal-mariadb-test-1'
|
||||||
PIN = 'mariadb:12.2.2@sha256:42a27baaba3e8f3f0159d16381d5a7156661aa91dcc65f663cabb6a6f9503c00'
|
PIN = 'mariadb:12.2.2@sha256:42a27baaba3e8f3f0159d16381d5a7156661aa91dcc65f663cabb6a6f9503c00'
|
||||||
VERSION = 'p9-requal-linux-2b26953'
|
VERSION = 'p9-requal-linux-2b26953'
|
||||||
|
COMMIT = '2b26953'
|
||||||
|
CONFIG = '../docs/redesign/phase-9/p9-requal-01/linux/playwright.config.ts'
|
||||||
|
|
||||||
def guard_schema(name):
|
def guard_schema(name):
|
||||||
if not re.fullmatch(r'jt_it_[0-9a-f]{32}', name):
|
if not re.fullmatch(r'jt_it_[0-9a-f]{32}', name):
|
||||||
@@ -71,7 +73,7 @@ def main():
|
|||||||
'Auth__AdminEmail':'e2e@example.test','Auth__AdminPassword':'E2ePassword123!', 'Auth__AllowRegistration':'false',
|
'Auth__AdminEmail':'e2e@example.test','Auth__AdminPassword':'E2ePassword123!', 'Auth__AllowRegistration':'false',
|
||||||
'RateLimits__AuthLoginPermitLimit':'1000','Cors__Origins__0':'http://localhost:3300',
|
'RateLimits__AuthLoginPermitLimit':'1000','Cors__Origins__0':'http://localhost:3300',
|
||||||
'Workers__AiOperationsEnabled':'false','Workers__SavedJobSearchAlertsEnabled':'false',
|
'Workers__AiOperationsEnabled':'false','Workers__SavedJobSearchAlertsEnabled':'false',
|
||||||
'HttpsRedirection__Enabled':'false','App__Version':VERSION,'App__CommitSha':'2b26953',
|
'HttpsRedirection__Enabled':'false','App__Version':VERSION,'App__CommitSha':COMMIT,
|
||||||
'Data__Root':'/data','Logging__LogLevel__Default':'Warning'}
|
'Data__Root':'/data','Logging__LogLevel__Default':'Warning'}
|
||||||
args=['docker','create','--name',api,'--label','task=p9-requal-01','--network',network,
|
args=['docker','create','--name',api,'--label','task=p9-requal-01','--network',network,
|
||||||
'-p','127.0.0.1:5302:8080','--tmpfs','/data:rw,nosuid,size=512m']
|
'-p','127.0.0.1:5302:8080','--tmpfs','/data:rw,nosuid,size=512m']
|
||||||
@@ -99,7 +101,7 @@ def main():
|
|||||||
'CV_FIDELITY_OUTPUT':str(OUT/'fidelity'),'CV_SETTINGS_FIDELITY_OUTPUT':str(OUT/'settings-fidelity'),
|
'CV_FIDELITY_OUTPUT':str(OUT/'fidelity'),'CV_SETTINGS_FIDELITY_OUTPUT':str(OUT/'settings-fidelity'),
|
||||||
'PLAYWRIGHT_JSON_OUTPUT_NAME':str(OUT.parent/'linux-renderer.json')}
|
'PLAYWRIGHT_JSON_OUTPUT_NAME':str(OUT.parent/'linux-renderer.json')}
|
||||||
test=['node','node_modules/@playwright/test/cli.js','test',
|
test=['node','node_modules/@playwright/test/cli.js','test',
|
||||||
'--config=../docs/redesign/phase-9/p9-requal-01/linux/playwright.config.ts',
|
'--config='+CONFIG,
|
||||||
'--retries=0','--reporter=list,json','--output='+str(OUT/'test-results')]
|
'--retries=0','--reporter=list,json','--output='+str(OUT/'test-results')]
|
||||||
with (OUT/'playwright.log').open('w',encoding='utf-8') as log:
|
with (OUT/'playwright.log').open('w',encoding='utf-8') as log:
|
||||||
record['browserExitCode']=subprocess.run(['rtk','proxy',*test],cwd=ROOT/'job-tracker-ui',env=env,stdout=log,stderr=subprocess.STDOUT).returncode
|
record['browserExitCode']=subprocess.run(['rtk','proxy',*test],cwd=ROOT/'job-tracker-ui',env=env,stdout=log,stderr=subprocess.STDOUT).returncode
|
||||||
|
|||||||
@@ -856,7 +856,7 @@ export const translations = {
|
|||||||
cvEditorUseTemplateSetting: "Use template default: {setting}",
|
cvEditorUseTemplateSetting: "Use template default: {setting}",
|
||||||
cvEditorNumberRange: "Enter {min}–{max} in steps of {step}. Invalid values are not applied.",
|
cvEditorNumberRange: "Enter {min}–{max} in steps of {step}. Invalid values are not applied.",
|
||||||
cvEditorMarginHelp: "Values are in millimetres. Document density scales margins and spacing in the preview and PDF.",
|
cvEditorMarginHelp: "Values are in millimetres. Document density scales margins and spacing in the preview and PDF.",
|
||||||
cvEditorFontHelp: "Use the existing supported fonts. Check the exported PDF if a font is substituted on another device.",
|
cvEditorFontHelp: "Preview and PDF embed portable fonts: Segoe UI uses Selawik, Arial/Helvetica use Arimo, and Georgia uses Gelasio. Roboto and Poppins use their own bundled fonts. Saved font choices are retained.",
|
||||||
cvEditorTemplateCompatibility: "Only supported controls are shown. Other saved settings remain unchanged.",
|
cvEditorTemplateCompatibility: "Only supported controls are shown. Other saved settings remain unchanged.",
|
||||||
cvEditorAccentHelp: "The document accent is separate from the application theme.",
|
cvEditorAccentHelp: "The document accent is separate from the application theme.",
|
||||||
cvEditorChangeTemplateTitle: "Apply template defaults?",
|
cvEditorChangeTemplateTitle: "Apply template defaults?",
|
||||||
@@ -3730,7 +3730,7 @@ export const translations = {
|
|||||||
cvEditorUseTemplateSetting: "Bruk malens standard: {setting}",
|
cvEditorUseTemplateSetting: "Bruk malens standard: {setting}",
|
||||||
cvEditorNumberRange: "Skriv {min}–{max} i trinn på {step}. Ugyldige verdier brukes ikke.",
|
cvEditorNumberRange: "Skriv {min}–{max} i trinn på {step}. Ugyldige verdier brukes ikke.",
|
||||||
cvEditorMarginHelp: "Verdiene er i millimeter. Dokumentets tetthet justerer marger og avstand i forhåndsvisningen og PDF-en.",
|
cvEditorMarginHelp: "Verdiene er i millimeter. Dokumentets tetthet justerer marger og avstand i forhåndsvisningen og PDF-en.",
|
||||||
cvEditorFontHelp: "Bruk skriftene som allerede støttes. Sjekk den eksporterte PDF-en hvis en skrift erstattes på en annen enhet.",
|
cvEditorFontHelp: "Forhåndsvisning og PDF bygger inn portable skrifter: Segoe UI bruker Selawik, Arial/Helvetica bruker Arimo, og Georgia bruker Gelasio. Roboto og Poppins bruker sine egne medfølgende skrifter. Lagrede skriftvalg beholdes.",
|
||||||
cvEditorTemplateCompatibility: "Bare støttede kontroller vises. Andre lagrede innstillinger beholdes.",
|
cvEditorTemplateCompatibility: "Bare støttede kontroller vises. Andre lagrede innstillinger beholdes.",
|
||||||
cvEditorAccentHelp: "Dokumentets aksentfarge er uavhengig av appens tema.",
|
cvEditorAccentHelp: "Dokumentets aksentfarge er uavhengig av appens tema.",
|
||||||
cvEditorChangeTemplateTitle: "Bruke malens standarder?",
|
cvEditorChangeTemplateTitle: "Bruke malens standarder?",
|
||||||
|
|||||||
Reference in New Issue
Block a user