View Issue Details

IDProjectCategoryView StatusLast Update
0001013contextbug reportpublic2020-01-29 10:08
Reporteremojifreak Assigned ToHans Hagen  
PrioritynoneSeverityminorReproducibilityalways
Status closedResolutionfixed 
Summary0001013: Color SVG in OpenType font does not appear in PDF
DescriptionAccording to
https://meeting.contextgarden.net/2017/talks/2017-09-12-hans-color-fonts/picture-fonts.pdf
Color SVG in OpenType font format seems supported.

After downloading Abelone font from
https://www.fontself.com/colorfontweek/2018#abelone
to current directory and use "context" to the below file, PDF does not contain letters in Abelone font.

\definefont[colorsvgfont][file:./Abelone-FREE.otf*color:svg]
\starttext
ABCD efgh\\
\colorsvgfont ABCD efgh
\stoptext

A part of the log shows

fonts > svg conversion > executing runner 'otfsvg': inkscape --shell > temp-otf-svg-shape.log
fonts > svg conversion > processing 96 svg containers
fonts > svg conversion > processing 96 pdf results
fonts > svg conversion > svg conversion time 2.197 seconds

So the SVG-to-PDF conversion by inkscape was executed by context, but glyphs did not appear in PDF.
The related generated files are attached below. ConTeXt version is

$ context --version
mtx-context | ConTeXt Process Management 1.02
mtx-context |
mtx-context | main context file: /usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/context.mkiv
mtx-context | current version: 2019.03.21 21:39
TagsNo tags attached.

Activities

emojifreak

2019-09-08 09:17

reporter  

temp-otf-svg-shape.log (183 bytes)   
Inkscape 0.92.4 (5da689c313, 2019-01-14) interactive shell mode. Type 'quit' to quit.
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
temp-otf-svg-shape.log (183 bytes)   
colorsvg.tuc (5,360 bytes)   
local utilitydata = { }

utilitydata.comment={
 ["escape"]="[===[ ... ]===]",
 ["file"]="colorsvg",
 ["format"]="cont-en",
 ["stamp"]="2019.03.21 21:39",
 ["version"]=1.31,
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.variables then utilitydata.job.variables = { } end

utilitydata.job.variables.checksums={
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.variables then utilitydata.job.variables = { } end

utilitydata.job.variables.collected={
 ["macros"]={},
 ["randomseed"]=0.93082936154678,
 ["sectionblockorder"]={},
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.structure then utilitydata.job.structure = { } end

utilitydata.job.structure.collected={
 ["branches"]={},
 ["name"]="",
 ["type"]="text",
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.positions then utilitydata.job.positions = { } end

utilitydata.job.positions.collected={
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.passes then utilitydata.job.passes = { } end

utilitydata.job.passes.collected={
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.datasets then utilitydata.job.datasets = { } end

utilitydata.job.datasets.collected={
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.pagestates then utilitydata.job.pagestates = { } end

utilitydata.job.pagestates.collected={
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.specials then utilitydata.structures.specials = { } end

utilitydata.structures.specials.collected={
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.sections then utilitydata.structures.sections = { } end

utilitydata.structures.sections.collected={
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.counters then utilitydata.structures.counters = { } end

utilitydata.structures.counters.collected={
 ["chemical"]={
  { 0 },
 },
 ["combination"]={
  { 0 },
 },
 ["endnote"]={
  { 0 },
 },
 ["figure"]={
  { 0 },
 },
 ["footnote"]={
  { 0 },
 },
 ["formula"]={
  { 0 },
 },
 ["graphic"]={
  { 0 },
 },
 ["intermezzo"]={
  { 0 },
 },
 ["itemgroup:itemize"]={
  { 0 },
 },
 ["linenote"]={
  { 0 },
 },
 ["paragraph"]={
  { 0 },
 },
 ["realpage"]={
  { 1 },
 },
 ["subpage"]={
  { 1 },
 },
 ["table"]={
  { 0 },
 },
 ["userpage"]={
  { 1 },
 },
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.lists then utilitydata.structures.lists = { } end

utilitydata.structures.lists.collected={
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.pages then utilitydata.structures.pages = { } end

utilitydata.structures.pages.collected={
 {
  ["block"]="bodypart",
  ["number"]=1,
  ["numberdata"]=1,
  ["prefixdata"]=2,
  ["state"]="start",
 },
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.references then utilitydata.structures.references = { } end

utilitydata.structures.references.collected={
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.references then utilitydata.structures.references = { } end

utilitydata.structures.references.referred={
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.objects then utilitydata.job.objects = { } end

utilitydata.job.objects.collected={
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.synonyms then utilitydata.structures.synonyms = { } end

utilitydata.structures.synonyms.collected={
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.registers then utilitydata.structures.registers = { } end

utilitydata.structures.registers.collected={
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.blocks then utilitydata.structures.blocks = { } end

utilitydata.structures.blocks.collected={
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.files then utilitydata.job.files = { } end

utilitydata.job.files.collected={
}

if not utilitydata.publications then utilitydata.publications = { } end

utilitydata.publications.collected={
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.fileobjreferences then utilitydata.job.fileobjreferences = { } end

utilitydata.job.fileobjreferences.collected={
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.embedded then utilitydata.job.embedded = { } end

utilitydata.job.embedded.collected={
}

utilitydata.job.packed={
 ["index"]={
  {
   ["conversionset"]="pagenumber",
  },
  {
   ["connector"]="–",
   ["prefix"]="no",
   ["set"]="part",
  },
 },
 ["keys"]={
  ["directives"]=true,
  ["metadata"]=true,
  ["numberdata"]=true,
  ["numbers"]=true,
  ["ownnumbers"]=true,
  ["pagedata"]=true,
  ["prefixdata"]=true,
  ["processors"]=true,
  ["sectiondata"]=true,
  ["specification"]=true,
 },
 ["skip"]={
  ["datasets"]=true,
  ["positions"]=true,
  ["userdata"]=true,
 },
 ["version"]=1.02,
}

return utilitydata
colorsvg.tuc (5,360 bytes)   
colorsvg.pdf (10,062 bytes)
colorsvg.log (11,710 bytes)   
open source     > level 1, order 1, name '/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/cont-yes.mkiv'
system          > 
system          > ConTeXt  ver: 2019.03.21 21:39 MKIV beta  fmt: 2019.9.8  int: english/english
system          > 
system          > 'cont-new.mkiv' loaded
open source     > level 2, order 2, name '/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/cont-new.mkiv'
system          > beware: some patches loaded from cont-new.mkiv
close source    > level 2, order 2, name '/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/cont-new.mkiv'
system          > files > jobname 'colorsvg', input './colorsvg', result 'colorsvg'
fonts           > latin modern fonts are not preloaded
languages       > language 'en' is active
open source     > level 2, order 3, name '/home/ryutaroh/context/colorsvg.tex'
fonts           > preloading latin modern fonts (second stage)
fonts           > otf loading > loading '/usr/local/texlive/2019/texmf-dist/fonts/opentype/public/lm/lmroman12-regular.otf', hash 'lmroman12-regular'
fonts           > otf loading > loading done
fonts           > otf loading > saving '/usr/local/texlive/2019/texmf-dist/fonts/opentype/public/lm/lmroman12-regular.otf' in cache
system          > lua > compiling '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/otl/lmroman12-regular.tma' into '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/otl/lmroman12-regular.tmc'
system          > lua > dumping '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/otl/lmroman12-regular.tma' into '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/otl/lmroman12-regular.tmc' stripped
fonts           > otf loading > loading, optimizing, packing and caching time 0.073
fonts           > otf loading > loading '/usr/local/texlive/2019/texmf-dist/fonts/opentype/public/lm-math/latinmodern-math.otf', hash 'latinmodern-math'
fonts           > otf loading > loading done
fonts           > otf loading > saving '/usr/local/texlive/2019/texmf-dist/fonts/opentype/public/lm-math/latinmodern-math.otf' in cache
system          > lua > compiling '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/otl/latinmodern-math.tma' into '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/otl/latinmodern-math.tmc'
system          > lua > dumping '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/otl/latinmodern-math.tma' into '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/otl/latinmodern-math.tmc' stripped
fonts           > otf loading > loading, optimizing, packing and caching time 0.274
fonts           > 'fallback modern-designsize rm 12pt' is loaded
fonts           > otf loading > loading '/home/ryutaroh/context/Abelone-FREE.otf', hash 'abelone-free'
system          > lua > compiling '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/svg/abelone-free.tma' into '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/svg/abelone-free.tmc'
system          > lua > dumping '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/svg/abelone-free.tma' into '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/svg/abelone-free.tmc' stripped
fonts           > otf loading > loading done
fonts           > otf loading > saving '/home/ryutaroh/context/Abelone-FREE.otf' in cache
system          > lua > compiling '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/otl/abelone-free.tma' into '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/otl/abelone-free.tmc'
system          > lua > dumping '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/otl/abelone-free.tma' into '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/otl/abelone-free.tmc' stripped
fonts           > otf loading > loading, optimizing, packing and caching time 0.077
fonts           > svg conversion > executing runner 'otfsvg': inkscape --shell > temp-otf-svg-shape.log
fonts           > svg conversion > processing 96 svg containers
fonts           > svg conversion > processing 96 pdf results
fonts           > svg conversion > svg conversion time 2.197 seconds 
system          > lua > compiling '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/pdf/abelone-free.tma' into '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/pdf/abelone-free.tmc'
system          > lua > dumping '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/pdf/abelone-free.tma' into '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/pdf/abelone-free.tmc' stripped
backend         > xmp > using file '/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/lpdf-pdx.xml'
pages           > flushing realpage 1, userpage 1, subpage 1
close source    > level 2, order 3, name '/home/ryutaroh/context/colorsvg.tex'
close source    > level 1, order 3, name '/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/cont-yes.mkiv'

system          > start used files

system          > text: colorsvg

system          > stop used files


system          > start used files

system          >    1: filename=char-prv.lua filetype=tex format=tex foundname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/char-prv.lua fullname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/char-prv.lua usedmethod=database
system          >    2: filename=cont-yes.mkiv filetype=tex foundname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/cont-yes.mkiv fullname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/cont-yes.mkiv usedmethod=database
system          >    3: filename=publ-imp-default.lua filetype=lua foundname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/publ-imp-default.lua fullname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/publ-imp-default.lua usedmethod=database
system          >    4: filename=cont-new.mkiv filetype=tex foundname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/cont-new.mkiv fullname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/cont-new.mkiv usedmethod=database
system          >    5: filename=lang-exc.lua filetype=lua foundname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/lang-exc.lua fullname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/lang-exc.lua usedmethod=database
system          >    6: filename=lang-us.lua filetype=lua foundname=/usr/local/texlive/2019/texmf-dist/tex/context/patterns/mkiv/lang-us.lua fullname=/usr/local/texlive/2019/texmf-dist/tex/context/patterns/mkiv/lang-us.lua usedmethod=database
system          >    7: filename=/home/ryutaroh/context/colorsvg.tex foundname=/home/ryutaroh/context/colorsvg.tex fullname=/home/ryutaroh/context/colorsvg.tex usedmethod=direct
system          >    8: filename=lm.lfg filetype=tex foundname=/usr/local/texlive/2019/texmf-dist/tex/context/fonts/mkiv/lm.lfg fullname=/usr/local/texlive/2019/texmf-dist/tex/context/fonts/mkiv/lm.lfg usedmethod=database
system          >    9: filename=lmroman12-regular filetype=otf format=otf foundname=/usr/local/texlive/2019/texmf-dist/fonts/opentype/public/lm/lmroman12-regular.otf fullname=/usr/local/texlive/2019/texmf-dist/fonts/opentype/public/lm/lmroman12-regular.otf usedmethod=database
system          >   10: filename=latinmodern-math.otf filetype=opentypefonts foundname=/usr/local/texlive/2019/texmf-dist/fonts/opentype/public/lm-math/latinmodern-math.otf fullname=/usr/local/texlive/2019/texmf-dist/fonts/opentype/public/lm-math/latinmodern-math.otf usedmethod=database
system          >   11: filename=/home/ryutaroh/context/Abelone-FREE.otf format=otf foundname=/home/ryutaroh/context/Abelone-FREE.otf fullname=/home/ryutaroh/context/Abelone-FREE.otf usedmethod=direct
system          >   12: filename=pdftex.map filetype=map format=map foundname=/usr/local/texlive/2019/texmf-var/fonts/map/pdftex/updmap/pdftex.map fullname=/usr/local/texlive/2019/texmf-var/fonts/map/pdftex/updmap/pdftex.map usedmethod=database
system          >   13: filename=lpdf-pdx.xml filetype=tex foundname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/lpdf-pdx.xml fullname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/lpdf-pdx.xml usedmethod=database

system          > stop used files


system          > start commandline options

system          > currentrun="1"
system          > fulljobname="./colorsvg.tex"
system          > input="./colorsvg.tex"
system          > kindofrun="1"
system          > maxnofruns="9"
system          > texmfbinpath="/usr/local/texlive/2019/bin/x86_64-linux"

system          > stop commandline options


system          > start commandline files

system          >    1: ./colorsvg.tex

system          > stop commandline files


modules         > start used modules


modules         > stop used modules


mkiv lua stats  > used config file: selfautoparent:/texmfcnf.lua;selfautoparent:/texmf-dist/web2c/texmfcnf.lua
mkiv lua stats  > used cache path: readable+writable: '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9'
mkiv lua stats  > resource resolver: loadtime 0.091 seconds, 0 scans with scantime 0.000 seconds, 0 shared scans, 13 found files, scanned paths: <none>
mkiv lua stats  > stored bytecode data: 443 modules (0.269 sec), 93 tables (0.010 sec), 536 chunks (0.279 sec)
mkiv lua stats  > traced context: maxstack: 1369, freed: 0, unreachable: 1369
mkiv lua stats  > cleaned up reserved nodes: 53 nodes, 9 lists of 440
mkiv lua stats  > node memory usage: 1 glue, 3 kern, 2 penalty, 11 attribute, 50 glue_spec, 4 attribute_list, 2 temp, 2 user_defined
mkiv lua stats  > node list callback tasks: 8 unique task lists, 7 instances (re)created, 39 calls
mkiv lua stats  > driver time: 0.066 seconds 
mkiv lua stats  > used backend: pdf (backend for directly generating pdf output)
mkiv lua stats  > jobdata time: 0.001 seconds saving, 0.000 seconds loading
mkiv lua stats  > callbacks: internal: 159, file: 142, direct: 2, late: 0, function 503, total: 806
mkiv lua stats  > randomizer: resumed with value 0.93082936154678
mkiv lua stats  > result saved in file: colorsvg.pdf, compresslevel 3, objectcompresslevel 1
mkiv lua stats  > loaded patterns: en::1, load time: 0.000
mkiv lua stats  > loaded fonts: 3 files: abelone-free.otf, latinmodern-math.otf, lmroman12-regular.otf
mkiv lua stats  > font engine: otf 3.107, afm 1.513, tfm 1.000, 8 instances, 3 shared in backend, 3 common vectors, 0 common hashes, load time 2.772 seconds 
mkiv lua stats  > used platform: linux-64, type: unix, binary subtree: bin
mkiv lua stats  > used engine: luatex version 1.1 with functionality level 7127, banner: this is luatex, version 1.10.0 (tex live 2019)
mkiv lua stats  > control sequences: 45230 of 65536 + 100000
mkiv lua stats  > lua properties: engine: lua 5.3, used memory: 175 MB (ctx: 175 MB), hash chars: min(64,40), symbol mask: utf (τεχ)
mkiv lua stats  > runtime: 3.143 seconds, 1 processed pages, 1 shipped pages, 0.318 pages/second

colorsvg.log (11,710 bytes)   
colorsvg.tex (118 bytes)   
\definefont[colorsvgfont][file:./Abelone-FREE.otf*color:svg]
\starttext
ABCD efgh\\
\colorsvgfont ABCD efgh
\stoptext
colorsvg.tex (118 bytes)   

Hans Hagen

2019-09-09 13:43

manager   ~0001717

the font is not ok, the shapes are out of the viewbox so nothing ends up in the pdf blobs

emojifreak

2019-09-10 00:47

reporter   ~0001718

Hans, thank you for your attention and investigation. I am sorry for bothering you by a bogus font.
I tested two other fonts

Playbox from https://www.fontself.com/colorfontweek/2018 (middle of the page) and
Gilbert from https://github.com/Fontself/TypeWithPride/releases/download/1.005/Gilbert_1.005_alpha.zip

in place of the Abelone font. The none of the above two fonts generated reasonable results. Should I consider that Playbox and Gilbert are also bogus fonts...?
Related source files and generated files are attached below. I really hope NOT bothering you by bogus fonts.
If all the fonts I tested so far are bogus, I would appreciate it if you could tell a Color SVG-in-OpenType font for testing ConTeXt.
colorsvg3.tuc (5,361 bytes)   
local utilitydata = { }

utilitydata.comment={
 ["escape"]="[===[ ... ]===]",
 ["file"]="colorsvg3",
 ["format"]="cont-en",
 ["stamp"]="2019.03.21 21:39",
 ["version"]=1.31,
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.variables then utilitydata.job.variables = { } end

utilitydata.job.variables.checksums={
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.variables then utilitydata.job.variables = { } end

utilitydata.job.variables.collected={
 ["macros"]={},
 ["randomseed"]=0.76781524298713,
 ["sectionblockorder"]={},
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.structure then utilitydata.job.structure = { } end

utilitydata.job.structure.collected={
 ["branches"]={},
 ["name"]="",
 ["type"]="text",
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.positions then utilitydata.job.positions = { } end

utilitydata.job.positions.collected={
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.passes then utilitydata.job.passes = { } end

utilitydata.job.passes.collected={
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.datasets then utilitydata.job.datasets = { } end

utilitydata.job.datasets.collected={
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.pagestates then utilitydata.job.pagestates = { } end

utilitydata.job.pagestates.collected={
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.specials then utilitydata.structures.specials = { } end

utilitydata.structures.specials.collected={
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.sections then utilitydata.structures.sections = { } end

utilitydata.structures.sections.collected={
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.counters then utilitydata.structures.counters = { } end

utilitydata.structures.counters.collected={
 ["chemical"]={
  { 0 },
 },
 ["combination"]={
  { 0 },
 },
 ["endnote"]={
  { 0 },
 },
 ["figure"]={
  { 0 },
 },
 ["footnote"]={
  { 0 },
 },
 ["formula"]={
  { 0 },
 },
 ["graphic"]={
  { 0 },
 },
 ["intermezzo"]={
  { 0 },
 },
 ["itemgroup:itemize"]={
  { 0 },
 },
 ["linenote"]={
  { 0 },
 },
 ["paragraph"]={
  { 0 },
 },
 ["realpage"]={
  { 1 },
 },
 ["subpage"]={
  { 1 },
 },
 ["table"]={
  { 0 },
 },
 ["userpage"]={
  { 1 },
 },
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.lists then utilitydata.structures.lists = { } end

utilitydata.structures.lists.collected={
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.pages then utilitydata.structures.pages = { } end

utilitydata.structures.pages.collected={
 {
  ["block"]="bodypart",
  ["number"]=1,
  ["numberdata"]=1,
  ["prefixdata"]=2,
  ["state"]="start",
 },
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.references then utilitydata.structures.references = { } end

utilitydata.structures.references.collected={
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.references then utilitydata.structures.references = { } end

utilitydata.structures.references.referred={
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.objects then utilitydata.job.objects = { } end

utilitydata.job.objects.collected={
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.synonyms then utilitydata.structures.synonyms = { } end

utilitydata.structures.synonyms.collected={
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.registers then utilitydata.structures.registers = { } end

utilitydata.structures.registers.collected={
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.blocks then utilitydata.structures.blocks = { } end

utilitydata.structures.blocks.collected={
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.files then utilitydata.job.files = { } end

utilitydata.job.files.collected={
}

if not utilitydata.publications then utilitydata.publications = { } end

utilitydata.publications.collected={
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.fileobjreferences then utilitydata.job.fileobjreferences = { } end

utilitydata.job.fileobjreferences.collected={
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.embedded then utilitydata.job.embedded = { } end

utilitydata.job.embedded.collected={
}

utilitydata.job.packed={
 ["index"]={
  {
   ["conversionset"]="pagenumber",
  },
  {
   ["connector"]="–",
   ["prefix"]="no",
   ["set"]="part",
  },
 },
 ["keys"]={
  ["directives"]=true,
  ["metadata"]=true,
  ["numberdata"]=true,
  ["numbers"]=true,
  ["ownnumbers"]=true,
  ["pagedata"]=true,
  ["prefixdata"]=true,
  ["processors"]=true,
  ["sectiondata"]=true,
  ["specification"]=true,
 },
 ["skip"]={
  ["datasets"]=true,
  ["positions"]=true,
  ["userdata"]=true,
 },
 ["version"]=1.02,
}

return utilitydata
colorsvg3.tuc (5,361 bytes)   
colorsvg3.pdf (11,815 bytes)
colorsvg3.log (10,231 bytes)   
open source     > level 1, order 1, name '/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/cont-yes.mkiv'
system          > 
system          > ConTeXt  ver: 2019.03.21 21:39 MKIV beta  fmt: 2019.9.10  int: english/english
system          > 
system          > 'cont-new.mkiv' loaded
open source     > level 2, order 2, name '/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/cont-new.mkiv'
system          > beware: some patches loaded from cont-new.mkiv
close source    > level 2, order 2, name '/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/cont-new.mkiv'
system          > files > jobname 'colorsvg3', input './colorsvg3', result 'colorsvg3'
fonts           > latin modern fonts are not preloaded
languages       > language 'en' is active
open source     > level 2, order 3, name '/home/ryutaroh/context/colorsvg3.tex'
fonts           > preloading latin modern fonts (second stage)
fonts           > 'fallback modern-designsize rm 12pt' is loaded
fonts           > otf loading > loading '/home/ryutaroh/context/Gilbert-Color Bold Preview5.otf', hash 'gilbert-color-bold-preview5'
system          > lua > compiling '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/svg/gilbert-color-bold-preview5.tma' into '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/svg/gilbert-color-bold-preview5.tmc'
system          > lua > dumping '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/svg/gilbert-color-bold-preview5.tma' into '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/svg/gilbert-color-bold-preview5.tmc' stripped
fonts           > otf loading > loading done
fonts           > otf loading > saving '/home/ryutaroh/context/Gilbert-Color Bold Preview5.otf' in cache
system          > lua > compiling '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/otl/gilbert-color-bold-preview5.tma' into '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/otl/gilbert-color-bold-preview5.tmc'
system          > lua > dumping '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/otl/gilbert-color-bold-preview5.tma' into '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/otl/gilbert-color-bold-preview5.tmc' stripped
fonts           > otf loading > loading, optimizing, packing and caching time 0.048
fonts           > svg conversion > executing runner 'otfsvg': inkscape --shell > temp-otf-svg-shape.log
fonts           > svg conversion > processing 449 svg containers
fonts           > svg conversion > 100 shapes processed
fonts           > svg conversion > 200 shapes processed
fonts           > svg conversion > 300 shapes processed
fonts           > svg conversion > 400 shapes processed
fonts           > svg conversion > processing 449 pdf results
fonts           > svg conversion > svg conversion time 0.941 seconds 
system          > lua > compiling '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/pdf/gilbert-color-bold-preview5.tma' into '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/pdf/gilbert-color-bold-preview5.tmc'
system          > lua > dumping '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/pdf/gilbert-color-bold-preview5.tma' into '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/fonts/pdf/gilbert-color-bold-preview5.tmc' stripped
backend         > xmp > using file '/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/lpdf-pdx.xml'
pages           > flushing realpage 1, userpage 1, subpage 1
close source    > level 2, order 3, name '/home/ryutaroh/context/colorsvg3.tex'
close source    > level 1, order 3, name '/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/cont-yes.mkiv'

system          > start used files

system          > text: colorsvg3

system          > stop used files


system          > start used files

system          >    1: filename=char-prv.lua filetype=tex format=tex foundname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/char-prv.lua fullname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/char-prv.lua usedmethod=database
system          >    2: filename=cont-yes.mkiv filetype=tex foundname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/cont-yes.mkiv fullname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/cont-yes.mkiv usedmethod=database
system          >    3: filename=publ-imp-default.lua filetype=scripts foundname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/publ-imp-default.lua fullname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/publ-imp-default.lua usedmethod=database
system          >    4: filename=cont-new.mkiv filetype=tex foundname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/cont-new.mkiv fullname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/cont-new.mkiv usedmethod=database
system          >    5: filename=lang-exc.lua filetype=scripts foundname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/lang-exc.lua fullname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/lang-exc.lua usedmethod=database
system          >    6: filename=lang-us.lua filetype=scripts foundname=/usr/local/texlive/2019/texmf-dist/tex/context/patterns/mkiv/lang-us.lua fullname=/usr/local/texlive/2019/texmf-dist/tex/context/patterns/mkiv/lang-us.lua usedmethod=database
system          >    7: filename=/home/ryutaroh/context/colorsvg3 foundname=/home/ryutaroh/context/colorsvg3.tex fullname=/home/ryutaroh/context/colorsvg3.tex usedmethod=qualified
system          >    8: filename=lm.lfg filetype=tex foundname=/usr/local/texlive/2019/texmf-dist/tex/context/fonts/mkiv/lm.lfg fullname=/usr/local/texlive/2019/texmf-dist/tex/context/fonts/mkiv/lm.lfg usedmethod=database
system          >    9: filename=lmroman12-regular filetype=otf format=otf foundname=/usr/local/texlive/2019/texmf-dist/fonts/opentype/public/lm/lmroman12-regular.otf fullname=/usr/local/texlive/2019/texmf-dist/fonts/opentype/public/lm/lmroman12-regular.otf usedmethod=database
system          >   10: filename=latinmodern-math.otf filetype=opentypefonts foundname=/usr/local/texlive/2019/texmf-dist/fonts/opentype/public/lm-math/latinmodern-math.otf fullname=/usr/local/texlive/2019/texmf-dist/fonts/opentype/public/lm-math/latinmodern-math.otf usedmethod=database
system          >   11: filename=/home/ryutaroh/context/Gilbert-Color Bold Preview5.otf format=otf foundname=/home/ryutaroh/context/Gilbert-Color Bold Preview5.otf fullname=/home/ryutaroh/context/Gilbert-Color Bold Preview5.otf usedmethod=direct
system          >   12: filename=pdftex.map filetype=map format=map foundname=/usr/local/texlive/2019/texmf-var/fonts/map/pdftex/updmap/pdftex.map fullname=/usr/local/texlive/2019/texmf-var/fonts/map/pdftex/updmap/pdftex.map usedmethod=database
system          >   13: filename=lpdf-pdx.xml filetype=tex foundname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/lpdf-pdx.xml fullname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/lpdf-pdx.xml usedmethod=database

system          > stop used files


system          > start commandline options

system          > currentrun="1"
system          > fulljobname="./colorsvg3"
system          > input="./colorsvg3"
system          > kindofrun="1"
system          > maxnofruns="9"
system          > texmfbinpath="/usr/local/texlive/2019/bin/x86_64-linux"

system          > stop commandline options


system          > start commandline files

system          >    1: ./colorsvg3

system          > stop commandline files


modules         > start used modules


modules         > stop used modules


mkiv lua stats  > used config file: selfautoparent:/texmfcnf.lua;selfautoparent:/texmf-dist/web2c/texmfcnf.lua
mkiv lua stats  > used cache path: readable+writable: '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9'
mkiv lua stats  > resource resolver: loadtime 0.089 seconds, 0 scans with scantime 0.000 seconds, 0 shared scans, 13 found files, scanned paths: <none>
mkiv lua stats  > stored bytecode data: 443 modules (0.271 sec), 93 tables (0.010 sec), 536 chunks (0.281 sec)
mkiv lua stats  > traced context: maxstack: 1369, freed: 0, unreachable: 1369
mkiv lua stats  > cleaned up reserved nodes: 53 nodes, 9 lists of 440
mkiv lua stats  > node memory usage: 1 glue, 3 kern, 2 penalty, 11 attribute, 50 glue_spec, 4 attribute_list, 2 temp, 2 user_defined
mkiv lua stats  > node list callback tasks: 8 unique task lists, 7 instances (re)created, 39 calls
mkiv lua stats  > driver time: 0.060 seconds 
mkiv lua stats  > used backend: pdf (backend for directly generating pdf output)
mkiv lua stats  > jobdata time: 0.000 seconds saving, 0.000 seconds loading
mkiv lua stats  > callbacks: internal: 159, file: 142, direct: 2, late: 0, function 503, total: 806
mkiv lua stats  > randomizer: resumed with value 0.76781524298713
mkiv lua stats  > result saved in file: colorsvg3.pdf, compresslevel 3, objectcompresslevel 1
mkiv lua stats  > loaded patterns: en::1, load time: 0.000
mkiv lua stats  > loaded fonts: 3 files: gilbert-color bold preview5.otf, latinmodern-math.otf, lmroman12-regular.otf
mkiv lua stats  > font engine: otf 3.107, afm 1.513, tfm 1.000, 8 instances, 3 shared in backend, 3 common vectors, 0 common hashes, load time 1.152 seconds 
mkiv lua stats  > used platform: linux-64, type: unix, binary subtree: bin
mkiv lua stats  > used engine: luatex version 1.1 with functionality level 7127, banner: this is luatex, version 1.10.0 (tex live 2019)
mkiv lua stats  > control sequences: 45230 of 65536 + 100000
mkiv lua stats  > lua properties: engine: lua 5.3, used memory: 160 MB (ctx: 160 MB), hash chars: min(64,40), symbol mask: utf (τεχ)
mkiv lua stats  > runtime: 1.522 seconds, 1 processed pages, 1 shipped pages, 0.657 pages/second

colorsvg3.log (10,231 bytes)   
colorsvg3.tex (135 bytes)   
\definefont[colorsvgfont][file:{./Gilbert-Color Bold Preview5.otf}*color:svg]
\starttext
ABCD efgh\\
\colorsvgfont ABCD efgh
\stoptext
colorsvg3.tex (135 bytes)   
colorsvg2.tuc (5,361 bytes)   
local utilitydata = { }

utilitydata.comment={
 ["escape"]="[===[ ... ]===]",
 ["file"]="colorsvg2",
 ["format"]="cont-en",
 ["stamp"]="2019.03.21 21:39",
 ["version"]=1.31,
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.variables then utilitydata.job.variables = { } end

utilitydata.job.variables.checksums={
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.variables then utilitydata.job.variables = { } end

utilitydata.job.variables.collected={
 ["macros"]={},
 ["randomseed"]=0.59000460756943,
 ["sectionblockorder"]={},
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.structure then utilitydata.job.structure = { } end

utilitydata.job.structure.collected={
 ["branches"]={},
 ["name"]="",
 ["type"]="text",
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.positions then utilitydata.job.positions = { } end

utilitydata.job.positions.collected={
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.passes then utilitydata.job.passes = { } end

utilitydata.job.passes.collected={
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.datasets then utilitydata.job.datasets = { } end

utilitydata.job.datasets.collected={
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.pagestates then utilitydata.job.pagestates = { } end

utilitydata.job.pagestates.collected={
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.specials then utilitydata.structures.specials = { } end

utilitydata.structures.specials.collected={
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.sections then utilitydata.structures.sections = { } end

utilitydata.structures.sections.collected={
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.counters then utilitydata.structures.counters = { } end

utilitydata.structures.counters.collected={
 ["chemical"]={
  { 0 },
 },
 ["combination"]={
  { 0 },
 },
 ["endnote"]={
  { 0 },
 },
 ["figure"]={
  { 0 },
 },
 ["footnote"]={
  { 0 },
 },
 ["formula"]={
  { 0 },
 },
 ["graphic"]={
  { 0 },
 },
 ["intermezzo"]={
  { 0 },
 },
 ["itemgroup:itemize"]={
  { 0 },
 },
 ["linenote"]={
  { 0 },
 },
 ["paragraph"]={
  { 0 },
 },
 ["realpage"]={
  { 1 },
 },
 ["subpage"]={
  { 1 },
 },
 ["table"]={
  { 0 },
 },
 ["userpage"]={
  { 1 },
 },
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.lists then utilitydata.structures.lists = { } end

utilitydata.structures.lists.collected={
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.pages then utilitydata.structures.pages = { } end

utilitydata.structures.pages.collected={
 {
  ["block"]="bodypart",
  ["number"]=1,
  ["numberdata"]=1,
  ["prefixdata"]=2,
  ["state"]="start",
 },
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.references then utilitydata.structures.references = { } end

utilitydata.structures.references.collected={
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.references then utilitydata.structures.references = { } end

utilitydata.structures.references.referred={
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.objects then utilitydata.job.objects = { } end

utilitydata.job.objects.collected={
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.synonyms then utilitydata.structures.synonyms = { } end

utilitydata.structures.synonyms.collected={
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.registers then utilitydata.structures.registers = { } end

utilitydata.structures.registers.collected={
}

if not utilitydata.structures then utilitydata.structures = { } end
if not utilitydata.structures.blocks then utilitydata.structures.blocks = { } end

utilitydata.structures.blocks.collected={
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.files then utilitydata.job.files = { } end

utilitydata.job.files.collected={
}

if not utilitydata.publications then utilitydata.publications = { } end

utilitydata.publications.collected={
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.fileobjreferences then utilitydata.job.fileobjreferences = { } end

utilitydata.job.fileobjreferences.collected={
}

if not utilitydata.job then utilitydata.job = { } end
if not utilitydata.job.embedded then utilitydata.job.embedded = { } end

utilitydata.job.embedded.collected={
}

utilitydata.job.packed={
 ["index"]={
  {
   ["conversionset"]="pagenumber",
  },
  {
   ["connector"]="–",
   ["prefix"]="no",
   ["set"]="part",
  },
 },
 ["keys"]={
  ["directives"]=true,
  ["metadata"]=true,
  ["numberdata"]=true,
  ["numbers"]=true,
  ["ownnumbers"]=true,
  ["pagedata"]=true,
  ["prefixdata"]=true,
  ["processors"]=true,
  ["sectiondata"]=true,
  ["specification"]=true,
 },
 ["skip"]={
  ["datasets"]=true,
  ["positions"]=true,
  ["userdata"]=true,
 },
 ["version"]=1.02,
}

return utilitydata
colorsvg2.tuc (5,361 bytes)   
colorsvg2.pdf (12,851 bytes)
colorsvg2.log (7,405 bytes)   
open source     > level 1, order 1, name '/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/cont-yes.mkiv'
system          > 
system          > ConTeXt  ver: 2019.03.21 21:39 MKIV beta  fmt: 2019.9.10  int: english/english
system          > 
system          > 'cont-new.mkiv' loaded
open source     > level 2, order 2, name '/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/cont-new.mkiv'
system          > beware: some patches loaded from cont-new.mkiv
close source    > level 2, order 2, name '/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/cont-new.mkiv'
system          > files > jobname 'colorsvg2', input './colorsvg2', result 'colorsvg2'
fonts           > latin modern fonts are not preloaded
languages       > language 'en' is active
open source     > level 2, order 3, name '/home/ryutaroh/context/colorsvg2.tex'
fonts           > preloading latin modern fonts (second stage)
fonts           > 'fallback modern-designsize rm 12pt' is loaded
backend         > xmp > using file '/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/lpdf-pdx.xml'
pages           > flushing realpage 1, userpage 1, subpage 1
close source    > level 2, order 3, name '/home/ryutaroh/context/colorsvg2.tex'
close source    > level 1, order 3, name '/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/cont-yes.mkiv'

system          > start used files

system          > text: colorsvg2

system          > stop used files


system          > start used files

system          >    1: filename=char-prv.lua filetype=tex format=tex foundname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/char-prv.lua fullname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/char-prv.lua usedmethod=database
system          >    2: filename=cont-yes.mkiv filetype=tex foundname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/cont-yes.mkiv fullname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/cont-yes.mkiv usedmethod=database
system          >    3: filename=publ-imp-default.lua filetype=scripts foundname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/publ-imp-default.lua fullname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/publ-imp-default.lua usedmethod=database
system          >    4: filename=cont-new.mkiv filetype=tex foundname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/cont-new.mkiv fullname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/cont-new.mkiv usedmethod=database
system          >    5: filename=lang-exc.lua filetype=scripts foundname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/lang-exc.lua fullname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/lang-exc.lua usedmethod=database
system          >    6: filename=lang-us.lua filetype=scripts foundname=/usr/local/texlive/2019/texmf-dist/tex/context/patterns/mkiv/lang-us.lua fullname=/usr/local/texlive/2019/texmf-dist/tex/context/patterns/mkiv/lang-us.lua usedmethod=database
system          >    7: filename=/home/ryutaroh/context/colorsvg2.tex foundname=/home/ryutaroh/context/colorsvg2.tex fullname=/home/ryutaroh/context/colorsvg2.tex usedmethod=direct
system          >    8: filename=lm.lfg filetype=tex foundname=/usr/local/texlive/2019/texmf-dist/tex/context/fonts/mkiv/lm.lfg fullname=/usr/local/texlive/2019/texmf-dist/tex/context/fonts/mkiv/lm.lfg usedmethod=database
system          >    9: filename=lmroman12-regular filetype=otf format=otf foundname=/usr/local/texlive/2019/texmf-dist/fonts/opentype/public/lm/lmroman12-regular.otf fullname=/usr/local/texlive/2019/texmf-dist/fonts/opentype/public/lm/lmroman12-regular.otf usedmethod=database
system          >   10: filename=latinmodern-math.otf filetype=opentypefonts foundname=/usr/local/texlive/2019/texmf-dist/fonts/opentype/public/lm-math/latinmodern-math.otf fullname=/usr/local/texlive/2019/texmf-dist/fonts/opentype/public/lm-math/latinmodern-math.otf usedmethod=database
system          >   11: filename=/home/ryutaroh/context/Playbox-FREE.otf format=otf foundname=/home/ryutaroh/context/Playbox-FREE.otf fullname=/home/ryutaroh/context/Playbox-FREE.otf usedmethod=direct
system          >   12: filename=pdftex.map filetype=map format=map foundname=/usr/local/texlive/2019/texmf-var/fonts/map/pdftex/updmap/pdftex.map fullname=/usr/local/texlive/2019/texmf-var/fonts/map/pdftex/updmap/pdftex.map usedmethod=database
system          >   13: filename=lpdf-pdx.xml filetype=tex foundname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/lpdf-pdx.xml fullname=/usr/local/texlive/2019/texmf-dist/tex/context/base/mkiv/lpdf-pdx.xml usedmethod=database

system          > stop used files


system          > start commandline options

system          > currentrun="3"
system          > fulljobname="./colorsvg2.tex"
system          > input="./colorsvg2.tex"
system          > kindofrun="2"
system          > maxnofruns="9"
system          > texmfbinpath="/usr/local/texlive/2019/bin/x86_64-linux"

system          > stop commandline options


system          > start commandline files

system          >    1: ./colorsvg2.tex

system          > stop commandline files


modules         > start used modules


modules         > stop used modules


mkiv lua stats  > used config file: selfautoparent:/texmfcnf.lua;selfautoparent:/texmf-dist/web2c/texmfcnf.lua
mkiv lua stats  > used cache path: readable+writable: '/home/ryutaroh/.texlive2019/texmf-var/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9'
mkiv lua stats  > resource resolver: loadtime 0.088 seconds, 0 scans with scantime 0.000 seconds, 0 shared scans, 13 found files, scanned paths: <none>
mkiv lua stats  > stored bytecode data: 443 modules (0.270 sec), 93 tables (0.010 sec), 536 chunks (0.280 sec)
mkiv lua stats  > traced context: maxstack: 1369, freed: 0, unreachable: 1369
mkiv lua stats  > cleaned up reserved nodes: 53 nodes, 9 lists of 440
mkiv lua stats  > node memory usage: 1 glue, 3 kern, 2 penalty, 11 attribute, 50 glue_spec, 4 attribute_list, 2 temp, 2 user_defined
mkiv lua stats  > node list callback tasks: 8 unique task lists, 7 instances (re)created, 39 calls
mkiv lua stats  > driver time: 0.063 seconds 
mkiv lua stats  > used backend: pdf (backend for directly generating pdf output)
mkiv lua stats  > jobdata time: 0.000 seconds saving, 0.000 seconds loading
mkiv lua stats  > callbacks: internal: 159, file: 142, direct: 2, late: 0, function 503, total: 806
mkiv lua stats  > randomizer: resumed with value 0.59000460756943
mkiv lua stats  > result saved in file: colorsvg2.pdf, compresslevel 3, objectcompresslevel 1
mkiv lua stats  > loaded patterns: en::1, load time: 0.000
mkiv lua stats  > loaded fonts: 3 files: playbox-free.otf, latinmodern-math.otf, lmroman12-regular.otf
mkiv lua stats  > font engine: otf 3.107, afm 1.513, tfm 1.000, 8 instances, 3 shared in backend, 3 common vectors, 0 common hashes, load time 0.151 seconds 
mkiv lua stats  > used platform: linux-64, type: unix, binary subtree: bin
mkiv lua stats  > used engine: luatex version 1.1 with functionality level 7127, banner: this is luatex, version 1.10.0 (tex live 2019)
mkiv lua stats  > control sequences: 45229 of 65536 + 100000
mkiv lua stats  > lua properties: engine: lua 5.3, used memory: 138 MB (ctx: 138 MB), hash chars: min(64,40), symbol mask: utf (τεχ)
mkiv lua stats  > runtime: 0.522 seconds, 1 processed pages, 1 shipped pages, 1.916 pages/second

colorsvg2.log (7,405 bytes)   
colorsvg2.tex (118 bytes)   
\definefont[colorsvgfont][file:./Playbox-FREE.otf*color:svg]
\starttext
ABCD efgh\\
\colorsvgfont ABCD efgh
\stoptext
colorsvg2.tex (118 bytes)   

Hans Hagen

2019-09-10 10:00

manager   ~0001719

the problem with these fonts is that they specify a viewbox of 0 1000 0 1000 while their shapes are someplace else so it's sloppy svg (maybe the same application is used to produce them) ... now, of course one can deal with that (thereby turning a bug into a feature as usual) but ...

anyway, what you can try is this: on font-ocl.lua replace

--shell

by

--export-area-drawing --shell

then remake the context format and wipe the bad behaving fonts from the texmf-cache subpaths (or just wipe the cache)

i then see Abelone-FREE.otf show up as well as Gilbert-ColorBoldPreview5 although the later has issues (for instance a 'g' has bad dimensions)

maybe there is a better inkscape option

i can try to tweak the boundingbox in the svg and see if that improves matters
oeps.pdf (242,003 bytes)

Hans Hagen

2019-09-10 12:46

manager   ~0001720

this kind of works ... but these fonts seem to have pretty bad kerning so one needs additional intercharacter kerns
oeps-2.pdf (260,594 bytes)

emojifreak

2019-09-10 19:33

reporter   ~0001721

Thank you very much! I use Linux and making file /usr/local/texlive/2019/bin/x86_64-linux/inkscape as

#!/bin/bash
exec /usr/bin/inkscape --export-area-drawing "$@"

forced glyphs to appear in PDFs in all the fonts I tested.
As another example, I tested Twitter Emoji font in SVG-OT format from
https://github.com/eosrei/twemoji-color-font/releases

Without --export-area-drawing no glyph appeared and with it a glyph appeared.
The Twitter SVG-OT font seems also having improper bounding boxes.

mkrueger

2019-09-11 11:40

reporter   ~0001722

> the problem with these fonts is that they specify a viewbox of 0 1000 0 1000 while their shapes are someplace else so it's sloppy svg (maybe the same application is used to produce them) ... now, of course one can deal with that (thereby turning a bug into a feature as usual) but ...

The problem isn't with the fonts, the fonts just do what the specification mandates. The ViewBox isn't used as a bounding box of sorts, it only gives the origin and a scaling factor: (from https://docs.microsoft.com/en-us/typography/opentype/spec/svg)
> The default SVG coordinate system is vertically mirrored in comparison to the TrueType/CFF design grid: the positive y-axis points downward, rather than usual convention for OpenType of the positive y-axis pointing upward. In other respects, the default coordinate system of an SVG document corresponds to the TrueType/CFF design grid: the default units for the SVG document are equivalent to font design units; the SVG origin (0,0) is aligned with the origin in the TrueType/CFF design grid; and y = 0 is the default horizontal baseline used for text layout.

> The size of the initial viewport for the SVG document is the em square: height and width both equal to head.unitsPerEm. If a viewBox attribute is specified on the <svg> element with width or height values different from the unitsPerEm value, this will have the effect of a scale transformation on the SVG “user” coordinate system. Similarly, if height or width attributes are specified on the <svg> element, this will also have the effect of a scale transformation on the coordinate system.

> Although the initial viewport size is the em square, the viewport must not be clipped. The <svg> element is assumed to have a clip property value of auto, and an overflow property value of visible. A font should not specify clip or overflow properties on the <svg> element. If clip or overflow properties are specified on the <svg> element with any other values, they must be ignored.

> Note: Because SVG uses a y-down coordinate system, then by default, glyphs will often be drawn in the +x -y quadrant of the SVG coordinate system. (See Example 2.) In many other environments, however, graphic elements may need to be in the +x +y quadrant to be visible. Font development tools should provide an appropriate transfer between a design environment and the representation within the font’s SVG table. In Example 3, a viewBox attribute is used to shift the viewport up. In Example 4, a translate transform is used on container elements to shift the graphic elements that comprise the glyph descriptions.

emojifreak

2019-11-12 13:54

reporter   ~0001724

otfsvg.topdf function in tex/context/base/mkiv/font-ocl.lua calls `getindices` function,
which seems defined in font-aux.lua.

On the other hand, luaotfload's fontloader-YYYY-MM-DD.lua does not (cannot?) incorporate font-aux.lua, and use of SVG-in-OT font in LuaTeX causes runtime error "texmf-dist/tex/luatex/luaotfload/fontloader-2019-10-29.lua:27743: attempt to call a nil value (field 'getindices')" with luaotfload 3.1 released this month as reported at https://github.com/latex3/luaotfload/issues/96#issuecomment-552716005
Ulrike Fischer advised me to report it here as it is an upstream (ConTeXt) issue.
Could you have a look at this issue?

Hans Hagen

2019-11-12 14:31

manager   ~0001725

i'll comment that line as it's not needed (only when later code is uncommented)

you can probably ask the maintainer to comment the line in luaotfload

         -- local indices = fonts.getindices(tfmdata)

Issue History

Date Modified Username Field Change
2019-09-08 09:17 emojifreak New Issue
2019-09-08 09:17 emojifreak File Added: temp-otf-svg-shape.log
2019-09-08 09:17 emojifreak File Added: colorsvg.tuc
2019-09-08 09:17 emojifreak File Added: colorsvg.pdf
2019-09-08 09:17 emojifreak File Added: colorsvg.log
2019-09-08 09:17 emojifreak File Added: colorsvg.tex
2019-09-09 13:43 Hans Hagen Note Added: 0001717
2019-09-10 00:47 emojifreak File Added: colorsvg3.tuc
2019-09-10 00:47 emojifreak File Added: colorsvg3.pdf
2019-09-10 00:47 emojifreak File Added: colorsvg3.log
2019-09-10 00:47 emojifreak File Added: colorsvg3.tex
2019-09-10 00:47 emojifreak File Added: colorsvg2.tuc
2019-09-10 00:47 emojifreak File Added: colorsvg2.pdf
2019-09-10 00:47 emojifreak File Added: colorsvg2.log
2019-09-10 00:47 emojifreak File Added: colorsvg2.tex
2019-09-10 00:47 emojifreak Note Added: 0001718
2019-09-10 10:00 Hans Hagen File Added: oeps.pdf
2019-09-10 10:00 Hans Hagen Note Added: 0001719
2019-09-10 12:46 Hans Hagen File Added: oeps-2.pdf
2019-09-10 12:46 Hans Hagen Note Added: 0001720
2019-09-10 19:33 emojifreak Note Added: 0001721
2019-09-11 11:40 mkrueger Note Added: 0001722
2019-11-12 13:54 emojifreak Note Added: 0001724
2019-11-12 14:31 Hans Hagen Note Added: 0001725
2020-01-29 10:08 Hans Hagen Assigned To => Hans Hagen
2020-01-29 10:08 Hans Hagen Status new => closed
2020-01-29 10:08 Hans Hagen Resolution open => fixed