[NTG-context] Metafun: Finding intersection between characters

Hans Hagen j.hagen at xs4all.nl
Wed Sep 26 14:24:47 CEST 2018


On 9/26/2018 2:14 PM, Jeong Dal wrote:
> Dear Hans,
> 
> I tested for more characters and found an interesting fact.
> If the first consonant and the vowels are connected in a glyph, then the outlining works OK, otherwise, it makes outline of the first consonant only.

you need to send a file not embedded .. otherwise the mail agent will 
apply magic to korean


> Here is a MWE.
> 
> Thank you.
> Best regards,
> 
> Dalyoung
> 
> %%%%%
> \definefontfeature
>   [korean-base]
>   [goodies=hanbatanglvt,
>    colorscheme=default,
>    mode=node,
>    script=hang,
>    language=kor]
> 
> \definefont[KoreanFont][hanbatanglvt*korean-base]
> 
> \starttext
> 
> \startMPdefinitions
>     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 ;
> \stopMPdefinitions
>     % entered as three characters: ᄅ  ᅡ  ᆺ (mail collapses)
> \startMPpage
>     KoreanOutline("\KoreanFont 랏") ;
> \stopMPpage
> \startMPpage
>     KoreanOutline("\KoreanFont 논") ;
> \stopMPpage
> \startMPpage
>     KoreanOutline("\KoreanFont 왕") ;
> \stopMPpage
> \startMPpage
>     KoreanOutline("\KoreanFont 닭") ;
> \stopMPpage
> \startMPpage
>     KoreanOutline("\KoreanFont 박") ;
> \stopMPpage
> \startMPpage
>     KoreanOutline("\KoreanFont 서") ;
> \stopMPpage
> 
> %%%%%%%%%
> 
>> 2018. 9. 26. 오후 7:10, Hans Hagen <j.hagen at xs4all.nl> 작성:
>>
>> 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
>> -----------------------------------------------------------------
> 


-- 

-----------------------------------------------------------------
                                           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