[NTG-context] Metafun: Finding intersection between characters

Hans Hagen j.hagen at xs4all.nl
Wed Sep 26 12:10:11 CEST 2018


On 9/26/2018 1:48 AM, Jeong Dal wrote:
> Dear Hans,
> 
> First, it is great to know a new method of drawing an outlined font!
> 
>   I have applied it to Korean fonts. As you know, every Korean character is composed with “consonant+vowel(+consonant)” type. If consonant and vowel are connected (for example, “호”), then it draws correctly, otherwise (for example, “하”)  it draws only consonant.
> Is there a way to count all the paths in a character(even if it is not connected)?
I assume that you want to identify the upto 3 snippets in a glyph so 
what you can do is loop over a picture.

\definefontfeature
   [korean-base]
   [goodies=hanbatanglvt,
    colorscheme=default,
    mode=node,
    script=hang,
    language=kor]

\definefont[KoreanFont][hanbatanglvt*korean-base]

\starttext

\startMPpage
     string KoreanColors[] ;

     KoreanColors[1] := "darkred" ;
     KoreanColors[2] := "darkgreen" ;
     KoreanColors[3] := "darkblue" ;
     KoreanColors[4] := "darkyellow" ;
     KoreanColors[5] := "darkgray" ;

     def KoreanOutline(expr txt) =
         picture p ; p := outlinetext.p(txt) ;
         numeric n ; n := 0 ;
         string old, new ; old := "" ;
         for i within p :
             new := prescriptpart i ;
             if (new = "") or (new <> old) :
                 old := new ;
                 n := n + 1 ;
                 if unknown KoreanColors[n] :
                     n := 1 ;
                 fi ;
             fi ;
             draw pathpart i
                 withpen pencircle scaled 1/10
                 withcolor KoreanColors[n] ;
         endfor ;
     enddef ;

     % entered as three characters: ᄅ  ᅡ  ᆺ (mail collapses)

     KoreanOutline("\KoreanFont 랏") ;
\stopMPpage

\stoptext

The prescript will be set in a next beta so then you get better results 
for more complex shapes.

Loading the font takes a bit of time and memory because the first time 
the outlines are filtered and converted and saved. But I assume Koreans 
TeX users have fast computers with lots of memory.

Hans


-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
        tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------


More information about the ntg-context mailing list