Error processing request

Parameters

CONTENT_LENGTH0
REQUEST_METHODGET
REQUEST_URI/revision/How+to+use+new+fonts+without+installing%27em?V=10
QUERY_STRINGV=10
CONTENT_TYPE
DOCUMENT_URI/revision/How+to+use+new+fonts+without+installing'em
DOCUMENT_ROOT/var/www/nikit/nikit/nginx/../docroot
SCGI1
SERVER_PROTOCOLHTTP/1.1
HTTPSon
REMOTE_ADDR172.69.7.90
REMOTE_PORT16406
SERVER_PORT4443
SERVER_NAMEwiki.tcl-lang.org
HTTP_HOSTwiki.tcl-lang.org
HTTP_CONNECTIONKeep-Alive
HTTP_ACCEPT_ENCODINGgzip, br
HTTP_X_FORWARDED_FOR3.149.251.154
HTTP_CF_RAY87e10fc3dde96195-ORD
HTTP_X_FORWARDED_PROTOhttps
HTTP_CF_VISITOR{"scheme":"https"}
HTTP_ACCEPT*/*
HTTP_USER_AGENTMozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
HTTP_CF_CONNECTING_IP3.149.251.154
HTTP_CDN_LOOPcloudflare
HTTP_CF_IPCOUNTRYUS

Body


Error

Unknow state transition: LINE -> END

-code

1

-level

0

-errorstack

INNER {returnImm {Unknow state transition: LINE -> END} {}} CALL {my render_wikit {How to use new fonts without installing'em} \[ABU\]\ 19-Jan-2009\n\nI\ like\ to\ give\ a\ distinctive\ look\ to\ my\ applications\ using\ uncommon\ fonts.\n\n\[http://web.tiscali.it/irrational/fonts/sampleScriptina.PNG\]\n\nThe\ (old)\ problem\ with\ fonts\ is\ that\ they\ should\ be\ installed\ before\ you\ can\ use\ them\ and,\nif\ you\ want\ to\ distribute\ your\ application,\ you\ should\ distribute\ and\ install\ your\ special\ fonts,\ too\ !\n\nOn\ Windows,\ installing\ a\ new\ font\ \"by\ program\"\ is\ not\ a\ trivial\ task,\ but\ I\ don't\ like\nto\ fill\ the\ system\ font-table\ with\ all\ the\ special\ fonts\ used\ by\ some\ useless\ apps\ ...\n\nHere\ is\ a\ way\ to\ deploy\ an\ application\ with\ new\ fonts.\nThe\ new\ fonts\ will\ be\ \"installed\"\ just\ by\ running\ your\ (tcl)\ application.\ Only\ your\ current\ app\ can\ see\ and\ use\nthis\ font.\ When\ the\ application\ terminates,\ the\ new\ fonts\ disappear\ from\ the\ font-table.\n\nWe\ need\ to\ link\ the\ win32-api.\ We\ will\ use\ \[Ffidl\]\ for\ this\ purpose.\n\nAlso,\ we\ need\ a\ new\ font-file.\nHere's\ an\ uncommon\ free\ font\ named\ Scriptina\ \[http://web.tiscali.it/irrational/fonts/SCRIPTIN.TTF\]\ downloaded\ from\ http://www.dafont.com/\ .\n\nJust\ for\ a\ quick\ test,\ save\ the\ font-file\ in\ \"c:/tmp\"\ folder.\ You\ can\ preview\ it\ but\ DO\ NOT\ install\ it\ !\n\nHere\ is\ the\ code\ with\ some\ comments:\n======\n\ #\ win32\ api\ from\ gdi32.dll\n\ #int\ AddFontResourceEx(\n\ #\ \ LPCTSTR\ lpszFilename,\ //\ font\ file\ name\n\ #\ \ DWORD\ fl,\ \ \ \ \ \ \ \ \ \ \ \ \ //\ font\ characteristics\n\ #\ \ PVOID\ pdv\ \ \ \ \ \ \ \ \ \ \ \ \ //\ reserved\n\ #)\;\n\ #\n\ #\ fl\ can\ be:\n\ #\ FR_PRIVATE\ (0x10)\n\ #\ \ Specifies\ that\ only\ the\ process\ that\ called\ the\ AddFontResourceEx\ function\ can\ use\ this\ font.\n\ #\ \ When\ the\ font\ name\ matches\ a\ public\ font,\ the\ private\ font\ will\ be\ chosen.\n\ #\ \ When\ the\ process\ terminates,\ the\ system\ will\ remove\ all\ the\ 'temporary'\ fonts.\n\ #\ FR_NOT_ENUM\ (0x20)\n\ #\ \ \ Specifies\ that\ no\ process,\ including\ the\ process\ that\ called\ the\ AddFontResourceEx\ function.\n\ #\ \ \ can\ enumerate\ this\ font.\n\ #\n\ #\ pd\ is\ reserved.\ Must\ be\ zero.\n\n\ \ #\ create\ a\ tcl\ proc\ named\ 'dll_AddFontResourceEx'\n\ package\ require\ Ffidl\n\ ffidl::callout\ dll_AddFontResourceEx\ \{\ pointer-utf16\ int\ pointer\}\ int\ \\\n\ \ \[ffidl::symbol\ gdi32.dll\ AddFontResourceExW\ \]\n\n\ \ #\ load\ a\ new\ font-file\ just\ for\ the\ current\ session.\n\ \ #\ Of\ course\ you\ can\ change\ the\ pathname\ ...\n\ set\ fontFile\ c:/tmp/SCRIPTIN.TTF\ \ \;\ #\ \ \"c:\\\\tmp\\\\SCRIPTIN.TTF\"\ is\ valid,\ too\ \n\n\ \ #\ Here\ is\ the\ core\ !\ \ Load\ the\ new\ font\ and\ check\ for\ errors\ ..\n\ set\ res\ \[dll_AddFontResourceEx\ \$fontFile\ 0x10\ 0\]\n\ if\ \{\ \$res\ ==\ 0\ \}\ \{\n\ \ \ \ puts\ \"ERROR\ loading\ \$fontFile\"\n\ \}\n\n\ \ #\ Finally,\ show\ something\ with\ the\ new\ font\ !\n\n\ \ #\ The\ new\ font-name\ is\ \"Scriptina\"\ \ (Note:\ font-names\ are\ case-insensitive)\n\ label\ .lab1\ -text\ \"Abu\ works!\"\ -font\ \{Scriptina\ 20\}\n\ pack\ .lab1\n======\n\nNote\ that\ the\ new\ font\ is\ now\ visible\ in\ your\ font-table,\ e.g.\n\[font\ families\]\ now\ includes\ \"Scriptina\"\nbut\ this\ font\ is\ not\ visible\ to\ other\ apps\ (try\ to\ open\ '''notepad.exe'''\ and\ open\ the\ font\ panel\ ...\ ).\n\n\n**Limitations**\n\n\ \ \ *\ It's\ for\ Windows\ platforms\ only.<<br>>Do\ you\ want\ to\ add\ a\ method\ for\ \[X\]\ and/or\ \[Aqua\]\ ?\n\n\ \ \ *\ There's\ no\ a\ programmatic\ way\ to\ determine\ the\ font-name\ just\ installed\n\ \ \ **\ You\ should\ know\ that\ SCRIPTIN.TTF\ holds\ a\ font\ named\ \"Scriptina\".\n\ \ \ **\ AFAIK\ there's\ nothing\ in\ win32\ API\ able\ to\ return\ a\ font-name,\ even\ if\ the\ \"AddFontResource\"\ function\ '''DOES'''\ add\ the\ font-name\ to\ the\ system\ font-table\ !\ ''\[Lars\ H\]:\ In\ principle,\ one\ should\ be\ able\ to\ discover\ this\ from\ the\ font\ file\ without\ asking\ the\ system\ for\ help\;\ the\ relevant\ entry\ appears\ to\ be\ one\ with\ nameID=4\ in\ the\ `name`\ table.\ Locating\ that\ datum\ takes\ some\ work,\ though.''\n\ \ \ ***\ \[PT\]:\ You\ can\ obtain\ a\ name\ from\ an\ HFONT.\ If\ you\ look\ at\ tk/win/tkWinFont.c\ InitFont\ function\ you\ can\ see\ how\ Tk\ does\ this.\ You\ select\ the\ HFONT\ into\ a\ display\ context\ and\ then\ ask\ the\ context\ for\ the\ current\ face\ name\ using\ GetTextFace.\ More\ simply\ though,\ the\ new\ font\ name\ will\ be\ provided\ as\ the\ difference\ between\ \[\[font\ families\]\]\ before\ and\ after\ you\ add\ the\ font\ resource.\n\n\ \ \ *\ Starkit\ won't\ work<<br>>If\ you\ include\ your\ fonts\ in\ a\ starkit\ (.kit),\ the\ 'dll_AddFontResourceEx'\ won't\ be\ able\ to\ locate\ your\ font-files\ 'zipped'\ in\ a\ starkit.<<br>>Uhm\ ...,\ a\ solution\ could\ be\ to\ add\ some\ startup-code\ for\ copying\ the\ font-files\ in\ a\ temp\ directory\ ...\n\ \ \ **\ \[PT\]\ As\ I\ also\ mentioned\ -\ there\ is\ an\ AddFontMemResourceEx\ function\ which\ could\ very\ easily\ be\ used\ to\ load\ a\ font\ resource\ from\ a\ \[memchan\]\ type\ channel\ such\ as\ is\ used\ when\ reading\ from\ vfs.\ It\ just\ needs\ a\ fancier\ C\ function.\n\n\ \ \ *\ what\ about\ a\ new\ TIP\ ?\ \[PT\]:\ how\ would\ you\ design\ the\ API\ to\ be\ cross-platform\ for\ such\ a\ feature?\ This\ is\ a\ useful\ feature\ for\ Windows\ but\ is\ it\ relevant\ for\ MacOSX\ and\ Unix?\n\n\n\[ABU\]\ 1-Apr-2009\n\nSure\ I'd\ like\ to\ solve\ this\ problem\ for\ Linux/Mac,\ too.\ For\ Windows\ we'got\ a\ solution.\ For\ Linux/Mac\ I\ suspect\ the\ solution\ could\ be\ even\ easier\ ...\ <<br>>\nOnce\ we\ got\ solutions\ for\ all\ the\ platforms,\ I'd\ like\ to\ join\ them\ within\ the\ \[font\]\ command:\n\ #\ something\ like\ this\ :\n\ font\ add\ _filename_\n\nOf\ course\ the\ Windows\ solution\ has\ to\ be\ enforced\ (and\ the\ next\ Linux/Mac\ solutions,\ too):\n\ \ \ *\ we\ need\ a\ way\ to\ get\ the\ font-face\ (font-name)\ of\ the\ 'added'\ font.\ \n\ \ \ *\ currently\ dll_AddFontResourceEx\ cannot\ 'see'\ a\ filename\ in\ a\ virtual\ filesystem.\ This\ is\ not\ a\ specific\ lack\;\ it\ is\ a\ lack\ of\ every\ win32\ function\ ...\ \ This\ (missing)\ capability\ is\ extremely\ important\ if\ we\ want\ to\ deliver\ our\ apps\ within\ a\ startkit/starpack.\n\nPat\ pointed\ out\ many\ interesting\ links\ for\ overcoming\ these\ limits.\ Unfortunatelly\ for\ me,\ they\ require\ a\ deep\ knowledge\ of\ the\ win32\ API\ ...\ any\ volunteer\ ?\n\ \n----\n\n\[Pat\ Thoyts\]\ posted\ this\ on\ the\ core\ list,\ regarding\ using\ \[critcl\]\ instead\ of\ fidl:\n======\n\ \ \ \ critcl::cproc\ AddFontResource\ \{Tcl_Interp*\ interp\ Tcl_Obj*\ pathObj\}\ ok\ \{\n\ \ \ \ \ \ \ \ Tcl_DString\ ds\;\n\ \ \ \ \ \ \ \ Tcl_Encoding\ unicode\;\n\ \ \ \ \ \ \ \ int\ len,\ r\ =\ TCL_OK\;\n\ \ \ \ \ \ \ \ const\ char\ *path\ =\ Tcl_GetStringFromObj(pathObj,\ &len)\;\n\n\ \ \ \ \ \ \ \ Tcl_DStringInit(&ds)\;\n\ \ \ \ \ \ \ \ unicode\ =\ Tcl_GetEncoding(interp,\ \"unicode\")\;\n\ \ \ \ \ \ \ \ Tcl_UtfToExternalDString(unicode,\ path,\ len,\ &ds)\;\n\ \ \ \ \ \ \ \ if\ (AddFontResourceExW(Tcl_DStringValue(&ds),\ FR_PRIVATE,\ NULL)\ ==\ 0)\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ r\ =\ TCL_ERROR\;\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ Tcl_DStringFree(&ds)\;\n\ \ \ \ \ \ \ \ Tcl_FreeEncoding(unicode)\;\n\ \ \ \ \ \ \ \ return\ r\;\n\ \ \ \ \}\n======\n\nGiven\ this\ function\ in\ an\ extension,\ it\ will\ add\ a\ font\ from\ a\ .ttf\ file\nto\ the\ set\ available\ shown\ in\ \[font\ families\].\ The\ FR_PRIVATE\ means\ the\nfont\ is\ only\ made\ available\ to\ this\ process\ and\ is\ not\ installed\ into\nthe\ system\ permanently.\n\n======\n\n\[SRIV\]\ On\ Ubuntu\ Linux,\ just\ placing\ the\ .ttf\ fonts\ into\ ~/.fonts/\ makes\ them\ instantly\ available\ to\ all\ apps,\ even\ Tk.\n\n----\n!!!!!!\n%|\[Category\ Characters\]\ |\ \[Category\ GUI\]\ |%\n!!!!!! regexp2} CALL {my render {How to use new fonts without installing'em} \[ABU\]\ 19-Jan-2009\n\nI\ like\ to\ give\ a\ distinctive\ look\ to\ my\ applications\ using\ uncommon\ fonts.\n\n\[http://web.tiscali.it/irrational/fonts/sampleScriptina.PNG\]\n\nThe\ (old)\ problem\ with\ fonts\ is\ that\ they\ should\ be\ installed\ before\ you\ can\ use\ them\ and,\nif\ you\ want\ to\ distribute\ your\ application,\ you\ should\ distribute\ and\ install\ your\ special\ fonts,\ too\ !\n\nOn\ Windows,\ installing\ a\ new\ font\ \"by\ program\"\ is\ not\ a\ trivial\ task,\ but\ I\ don't\ like\nto\ fill\ the\ system\ font-table\ with\ all\ the\ special\ fonts\ used\ by\ some\ useless\ apps\ ...\n\nHere\ is\ a\ way\ to\ deploy\ an\ application\ with\ new\ fonts.\nThe\ new\ fonts\ will\ be\ \"installed\"\ just\ by\ running\ your\ (tcl)\ application.\ Only\ your\ current\ app\ can\ see\ and\ use\nthis\ font.\ When\ the\ application\ terminates,\ the\ new\ fonts\ disappear\ from\ the\ font-table.\n\nWe\ need\ to\ link\ the\ win32-api.\ We\ will\ use\ \[Ffidl\]\ for\ this\ purpose.\n\nAlso,\ we\ need\ a\ new\ font-file.\nHere's\ an\ uncommon\ free\ font\ named\ Scriptina\ \[http://web.tiscali.it/irrational/fonts/SCRIPTIN.TTF\]\ downloaded\ from\ http://www.dafont.com/\ .\n\nJust\ for\ a\ quick\ test,\ save\ the\ font-file\ in\ \"c:/tmp\"\ folder.\ You\ can\ preview\ it\ but\ DO\ NOT\ install\ it\ !\n\nHere\ is\ the\ code\ with\ some\ comments:\n======\n\ #\ win32\ api\ from\ gdi32.dll\n\ #int\ AddFontResourceEx(\n\ #\ \ LPCTSTR\ lpszFilename,\ //\ font\ file\ name\n\ #\ \ DWORD\ fl,\ \ \ \ \ \ \ \ \ \ \ \ \ //\ font\ characteristics\n\ #\ \ PVOID\ pdv\ \ \ \ \ \ \ \ \ \ \ \ \ //\ reserved\n\ #)\;\n\ #\n\ #\ fl\ can\ be:\n\ #\ FR_PRIVATE\ (0x10)\n\ #\ \ Specifies\ that\ only\ the\ process\ that\ called\ the\ AddFontResourceEx\ function\ can\ use\ this\ font.\n\ #\ \ When\ the\ font\ name\ matches\ a\ public\ font,\ the\ private\ font\ will\ be\ chosen.\n\ #\ \ When\ the\ process\ terminates,\ the\ system\ will\ remove\ all\ the\ 'temporary'\ fonts.\n\ #\ FR_NOT_ENUM\ (0x20)\n\ #\ \ \ Specifies\ that\ no\ process,\ including\ the\ process\ that\ called\ the\ AddFontResourceEx\ function.\n\ #\ \ \ can\ enumerate\ this\ font.\n\ #\n\ #\ pd\ is\ reserved.\ Must\ be\ zero.\n\n\ \ #\ create\ a\ tcl\ proc\ named\ 'dll_AddFontResourceEx'\n\ package\ require\ Ffidl\n\ ffidl::callout\ dll_AddFontResourceEx\ \{\ pointer-utf16\ int\ pointer\}\ int\ \\\n\ \ \[ffidl::symbol\ gdi32.dll\ AddFontResourceExW\ \]\n\n\ \ #\ load\ a\ new\ font-file\ just\ for\ the\ current\ session.\n\ \ #\ Of\ course\ you\ can\ change\ the\ pathname\ ...\n\ set\ fontFile\ c:/tmp/SCRIPTIN.TTF\ \ \;\ #\ \ \"c:\\\\tmp\\\\SCRIPTIN.TTF\"\ is\ valid,\ too\ \n\n\ \ #\ Here\ is\ the\ core\ !\ \ Load\ the\ new\ font\ and\ check\ for\ errors\ ..\n\ set\ res\ \[dll_AddFontResourceEx\ \$fontFile\ 0x10\ 0\]\n\ if\ \{\ \$res\ ==\ 0\ \}\ \{\n\ \ \ \ puts\ \"ERROR\ loading\ \$fontFile\"\n\ \}\n\n\ \ #\ Finally,\ show\ something\ with\ the\ new\ font\ !\n\n\ \ #\ The\ new\ font-name\ is\ \"Scriptina\"\ \ (Note:\ font-names\ are\ case-insensitive)\n\ label\ .lab1\ -text\ \"Abu\ works!\"\ -font\ \{Scriptina\ 20\}\n\ pack\ .lab1\n======\n\nNote\ that\ the\ new\ font\ is\ now\ visible\ in\ your\ font-table,\ e.g.\n\[font\ families\]\ now\ includes\ \"Scriptina\"\nbut\ this\ font\ is\ not\ visible\ to\ other\ apps\ (try\ to\ open\ '''notepad.exe'''\ and\ open\ the\ font\ panel\ ...\ ).\n\n\n**Limitations**\n\n\ \ \ *\ It's\ for\ Windows\ platforms\ only.<<br>>Do\ you\ want\ to\ add\ a\ method\ for\ \[X\]\ and/or\ \[Aqua\]\ ?\n\n\ \ \ *\ There's\ no\ a\ programmatic\ way\ to\ determine\ the\ font-name\ just\ installed\n\ \ \ **\ You\ should\ know\ that\ SCRIPTIN.TTF\ holds\ a\ font\ named\ \"Scriptina\".\n\ \ \ **\ AFAIK\ there's\ nothing\ in\ win32\ API\ able\ to\ return\ a\ font-name,\ even\ if\ the\ \"AddFontResource\"\ function\ '''DOES'''\ add\ the\ font-name\ to\ the\ system\ font-table\ !\ ''\[Lars\ H\]:\ In\ principle,\ one\ should\ be\ able\ to\ discover\ this\ from\ the\ font\ file\ without\ asking\ the\ system\ for\ help\;\ the\ relevant\ entry\ appears\ to\ be\ one\ with\ nameID=4\ in\ the\ `name`\ table.\ Locating\ that\ datum\ takes\ some\ work,\ though.''\n\ \ \ ***\ \[PT\]:\ You\ can\ obtain\ a\ name\ from\ an\ HFONT.\ If\ you\ look\ at\ tk/win/tkWinFont.c\ InitFont\ function\ you\ can\ see\ how\ Tk\ does\ this.\ You\ select\ the\ HFONT\ into\ a\ display\ context\ and\ then\ ask\ the\ context\ for\ the\ current\ face\ name\ using\ GetTextFace.\ More\ simply\ though,\ the\ new\ font\ name\ will\ be\ provided\ as\ the\ difference\ between\ \[\[font\ families\]\]\ before\ and\ after\ you\ add\ the\ font\ resource.\n\n\ \ \ *\ Starkit\ won't\ work<<br>>If\ you\ include\ your\ fonts\ in\ a\ starkit\ (.kit),\ the\ 'dll_AddFontResourceEx'\ won't\ be\ able\ to\ locate\ your\ font-files\ 'zipped'\ in\ a\ starkit.<<br>>Uhm\ ...,\ a\ solution\ could\ be\ to\ add\ some\ startup-code\ for\ copying\ the\ font-files\ in\ a\ temp\ directory\ ...\n\ \ \ **\ \[PT\]\ As\ I\ also\ mentioned\ -\ there\ is\ an\ AddFontMemResourceEx\ function\ which\ could\ very\ easily\ be\ used\ to\ load\ a\ font\ resource\ from\ a\ \[memchan\]\ type\ channel\ such\ as\ is\ used\ when\ reading\ from\ vfs.\ It\ just\ needs\ a\ fancier\ C\ function.\n\n\ \ \ *\ what\ about\ a\ new\ TIP\ ?\ \[PT\]:\ how\ would\ you\ design\ the\ API\ to\ be\ cross-platform\ for\ such\ a\ feature?\ This\ is\ a\ useful\ feature\ for\ Windows\ but\ is\ it\ relevant\ for\ MacOSX\ and\ Unix?\n\n\n\[ABU\]\ 1-Apr-2009\n\nSure\ I'd\ like\ to\ solve\ this\ problem\ for\ Linux/Mac,\ too.\ For\ Windows\ we'got\ a\ solution.\ For\ Linux/Mac\ I\ suspect\ the\ solution\ could\ be\ even\ easier\ ...\ <<br>>\nOnce\ we\ got\ solutions\ for\ all\ the\ platforms,\ I'd\ like\ to\ join\ them\ within\ the\ \[font\]\ command:\n\ #\ something\ like\ this\ :\n\ font\ add\ _filename_\n\nOf\ course\ the\ Windows\ solution\ has\ to\ be\ enforced\ (and\ the\ next\ Linux/Mac\ solutions,\ too):\n\ \ \ *\ we\ need\ a\ way\ to\ get\ the\ font-face\ (font-name)\ of\ the\ 'added'\ font.\ \n\ \ \ *\ currently\ dll_AddFontResourceEx\ cannot\ 'see'\ a\ filename\ in\ a\ virtual\ filesystem.\ This\ is\ not\ a\ specific\ lack\;\ it\ is\ a\ lack\ of\ every\ win32\ function\ ...\ \ This\ (missing)\ capability\ is\ extremely\ important\ if\ we\ want\ to\ deliver\ our\ apps\ within\ a\ startkit/starpack.\n\nPat\ pointed\ out\ many\ interesting\ links\ for\ overcoming\ these\ limits.\ Unfortunatelly\ for\ me,\ they\ require\ a\ deep\ knowledge\ of\ the\ win32\ API\ ...\ any\ volunteer\ ?\n\ \n----\n\n\[Pat\ Thoyts\]\ posted\ this\ on\ the\ core\ list,\ regarding\ using\ \[critcl\]\ instead\ of\ fidl:\n======\n\ \ \ \ critcl::cproc\ AddFontResource\ \{Tcl_Interp*\ interp\ Tcl_Obj*\ pathObj\}\ ok\ \{\n\ \ \ \ \ \ \ \ Tcl_DString\ ds\;\n\ \ \ \ \ \ \ \ Tcl_Encoding\ unicode\;\n\ \ \ \ \ \ \ \ int\ len,\ r\ =\ TCL_OK\;\n\ \ \ \ \ \ \ \ const\ char\ *path\ =\ Tcl_GetStringFromObj(pathObj,\ &len)\;\n\n\ \ \ \ \ \ \ \ Tcl_DStringInit(&ds)\;\n\ \ \ \ \ \ \ \ unicode\ =\ Tcl_GetEncoding(interp,\ \"unicode\")\;\n\ \ \ \ \ \ \ \ Tcl_UtfToExternalDString(unicode,\ path,\ len,\ &ds)\;\n\ \ \ \ \ \ \ \ if\ (AddFontResourceExW(Tcl_DStringValue(&ds),\ FR_PRIVATE,\ NULL)\ ==\ 0)\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ r\ =\ TCL_ERROR\;\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ Tcl_DStringFree(&ds)\;\n\ \ \ \ \ \ \ \ Tcl_FreeEncoding(unicode)\;\n\ \ \ \ \ \ \ \ return\ r\;\n\ \ \ \ \}\n======\n\nGiven\ this\ function\ in\ an\ extension,\ it\ will\ add\ a\ font\ from\ a\ .ttf\ file\nto\ the\ set\ available\ shown\ in\ \[font\ families\].\ The\ FR_PRIVATE\ means\ the\nfont\ is\ only\ made\ available\ to\ this\ process\ and\ is\ not\ installed\ into\nthe\ system\ permanently.\n\n======\n\n\[SRIV\]\ On\ Ubuntu\ Linux,\ just\ placing\ the\ .ttf\ fonts\ into\ ~/.fonts/\ makes\ them\ instantly\ available\ to\ all\ apps,\ even\ Tk.\n\n----\n!!!!!!\n%|\[Category\ Characters\]\ |\ \[Category\ GUI\]\ |%\n!!!!!!} CALL {my revision {How to use new fonts without installing'em}} CALL {::oo::Obj4908784 process revision/How+to+use+new+fonts+without+installing%27em} CALL {::oo::Obj4908782 process}

-errorcode

NONE

-errorinfo

Unknow state transition: LINE -> END
    while executing
"error $msg"
    (class "::Wiki" method "render_wikit" line 6)
    invoked from within
"my render_$default_markup $N $C $mkup_rendering_engine"
    (class "::Wiki" method "render" line 8)
    invoked from within
"my render $name $C"
    (class "::Wiki" method "revision" line 31)
    invoked from within
"my revision $page"
    (class "::Wiki" method "process" line 56)
    invoked from within
"$server process [string trim $uri /]"

-errorline

4