From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/50828 Path: news.gmane.org!not-for-mail From: Hans Hagen Newsgroups: gmane.comp.tex.context Subject: Re: MkIV italic correction? Date: Wed, 27 May 2009 10:11:16 +0200 Message-ID: <4A1CF5A4.7040906@wxs.nl> References: <20090520062507.GA4330@Fity> <4A152521.5070406@wxs.nl> <20090521132031.GA27281@khaled-laptop> <4A166F8F.4020003@elvenkind.com> <4A1682EC.1000201@wxs.nl> <4A168B4D.6010702@elvenkind.com> Reply-To: mailing list for ConTeXt users NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1243411945 5622 80.91.229.12 (27 May 2009 08:12:25 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 27 May 2009 08:12:25 +0000 (UTC) To: mailing list for ConTeXt users Original-X-From: ntg-context-bounces@ntg.nl Wed May 27 10:12:22 2009 Return-path: Envelope-to: gctc-ntg-context-518@m.gmane.org Original-Received: from ronja.vet.uu.nl ([131.211.172.88] helo=ronja.ntg.nl) by lo.gmane.org with esmtp (Exim 4.50) id 1M9EFJ-0007az-Hu for gctc-ntg-context-518@m.gmane.org; Wed, 27 May 2009 10:12:21 +0200 Original-Received: from localhost (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id CBF741FE6C; Wed, 27 May 2009 10:12:20 +0200 (CEST) Original-Received: from ronja.ntg.nl ([127.0.0.1]) by localhost (smtp.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 12192-07; Wed, 27 May 2009 10:11:33 +0200 (CEST) Original-Received: from ronja.vet.uu.nl (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 0E5731FE2F; Wed, 27 May 2009 10:11:33 +0200 (CEST) Original-Received: from localhost (localhost [127.0.0.1]) by ronja.ntg.nl (Postfix) with ESMTP id 1E0251FE2F for ; Wed, 27 May 2009 10:11:31 +0200 (CEST) Original-Received: from ronja.ntg.nl ([127.0.0.1]) by localhost (smtp.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 12196-03 for ; Wed, 27 May 2009 10:11:21 +0200 (CEST) Original-Received: from filter4-til.mf.surf.net (filter4-til.mf.surf.net [194.171.167.220]) by ronja.ntg.nl (Postfix) with ESMTP id 424621FE29 for ; Wed, 27 May 2009 10:11:21 +0200 (CEST) Original-Received: from mail.pragma-ade.net (dsl-083-247-100-017.solcon.nl [83.247.100.17]) by filter4-til.mf.surf.net (8.13.8/8.13.8/Debian-3) with ESMTP id n4R8BEpN021453 for ; Wed, 27 May 2009 10:11:14 +0200 Original-Received: from [10.100.1.100] (unverified [10.100.1.100]) by controller-1 (SurgeMail 3.9e) with ESMTP id 13251-1840426 for ; Wed, 27 May 2009 10:11:13 +0200 User-Agent: Thunderbird 2.0.0.21 (Windows/20090302) In-Reply-To: X-Originating-IP: 10.100.1.100 X-Authenticated-User: hagen@controller-1 X-Bayes-Prob: 0.0001 (Score 0, tokens from: @@RPTN) X-CanIt-Geo: ip=83.247.100.17; country=NL; region=15; city=Almelo; latitude=52.3500; longitude=6.6667; http://maps.google.com/maps?q=52.3500,6.6667&z=6 X-CanItPRO-Stream: uu:ntg-context@ntg.nl (inherits from uu:default, base:default) X-Canit-Stats-ID: 232489142 - cb38471dafec - 20090527 X-Scanned-By: CanIt (www . roaringpenguin . com) on 194.171.167.220 X-Virus-Scanned: amavisd-new at ntg.nl X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.11 Precedence: list List-Id: mailing list for ConTeXt users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: ntg-context-bounces@ntg.nl Errors-To: ntg-context-bounces@ntg.nl X-Virus-Scanned: amavisd-new at ntg.nl Xref: news.gmane.org gmane.comp.tex.context:50828 Archived-At: Dohyun Kim wrote: > Considering current state that we don't know any fonts that has ITLC table, > it would be better than nothing to implement italic correction as follows. > In the following code, "fontdata" is a table returned by the function > "fonts.define.read". > > local param = fontdata.parameters > local italicangle = fontdata.shared.otfdata.metadata.italicangle > if italicangle and italicangle < 0 then > local uwidth = fontdata.shared.otfdata.metadata.uwidth or 40 > local factor = fontdata.factor or 655.36 > param.slant = - math.tan(italicangle*math.pi/180) * param.quad > for i,v in pairs(fontdata.characters) do > local gl = fontdata.descriptions[i] > local it = (gl.boundingbox[3] - gl.width + uwidth*0.5) * factor > if it > 0 then v.italic = it end > end > end there are seleveral solutions: - extend the font with this info (faster but then it's always there which might not be ok as it's an approximation) - calculate it after loading (which is what you propose) in the mkiv code we do have a hook for that kind of things so this is then what i propose. watch how we don't scale here, we just add an entry to the shared data as that's where we hook in; the real implementation would look slightly different as an optimization is possible \starttext \startluacode table.insert(fonts.triggers,"itlc") local function itlc(tfmdata,value) if value then -- the magic 40 and it formula come from Dohyun Kim local fontdata = tfmdata.shared.otfdata or tfmdata.shared.afmdata local metadata = fontdata and fontdata.metadata if metadata then local italicangle = metadata.italicangle if italicangle and italicangle ~= 0 then local uwidth = (metadata.uwidth or 40)/2 for unicode, d in next, tfmdata.descriptions do local it = d.boundingbox[3] - d.width + uwidth if it ~= 0 then d.italic = it end end end end end end fonts.initializers.base.otf.itlc = itlc fonts.initializers.node.otf.itlc = itlc fonts.initializers.base.afm.itlc = itlc fonts.initializers.node.afm.itlc = itlc \stopluacode \definedfont[SerifItalic*default at 24pt] test\/test \definefontfeature[xdefault][default][itlc=yes] \definedfont[SerifItalic*xdefault at 24pt] test\/test \stoptext i could add it to the generic code (although i'm not going to add all the other context goodies to the generic code definitely not as long as they're experimental) ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl ----------------------------------------------------------------- ___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : https://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________