[prev in list] [next in list] [prev in thread] [next in thread]
List: cairo
Subject: Re: [cairo] pango+cairo how to get position of each character?
From: Theo Veenker <theo.veenker () beexy ! nl>
Date: 2021-05-10 14:59:57
Message-ID: 00ad7d21-d34f-9ceb-c949-3f5e153563e0 () beexy ! nl
[Download RAW message or body]
On 5/10/21 4:10 PM, 猛 郝 wrote:
> Hi Theo, thank you, that's great. what I want is first: get each glyph; then get contour
> and outline points of each glyph; then use cairo bezier related funtions to draw those
> glyphs. because I want to do some transform based on those outline and points information.
So you want to convert each character in a text to path and then operate on that. I'm
afraid that's far beyond my expertise. I think I would study Inkscape (the source code)
and learn from that.
>
> Now my question is if I can use some built-in cairo/pango function to get and render those
> outline and points without freetype library? I am not familiar with how cairo draws each
> glyph in detail (bitmap or bezier/line?)
I don't know font rendering in depth, sorry. If you can do the text to path stuff you can
of course draw or fill the path as you please. But seems a bit of an overkill if all you
want is to color the individual characters.
>
>
> ------------------------------------------------------------------------------------------
> *From:* cairo <cairo-bounces@cairographics.org> on behalf of Theo Veenker
> <theo.veenker@beexy.nl>
> *Sent:* Saturday, May 8, 2021 9:59 PM
> *To:* cairo@cairographics.org <cairo@cairographics.org>
> *Subject:* Re: [cairo] pango+cairo how to get position of each character?
> On 08/05/2021 10:32, mhao1999@live.cn wrote:
>> For example, I have a text string "hello" and a truetype font file, and
>> I want to apply different color to different character, currently I
>> cannot find a way to implement it.
>>
>> My thought is:
>> first get each position of each character from pango/cairo, then if no
>> api to render one by one, I can use freetype library to render each
>> glyph, does it work?
>>
>> Thanks for any idea.
>>
>
> I think you need to create a pango layout for the text. Then use a pango
> iterator to iterate over the lines and each line's content. This should
> give you the position and size of each glyph. Then you can render each
> character separately in the desired color at the calculated position.
> Maybe it can be done smarter than that.
>
> If your goal is just to display fancy colored text rather than use a
> specific color for each character, I would simply create a rainbow
> gradient or whatever and use that as the paint source for your text.
> That's much easier and may also look better.
>
> HTH.
>
> Theo
>
>
> --
> Theo Veenker | Beexy - Behavioral Experiment Software
> +31(0)524-541531 | +31(0)6-42525777 mobile
> theo.veenker@beexy.nl | www.beexy.nl <http://www.beexy.nl>
> --
> cairo mailing list
> cairo@cairographics.org
> https://lists.cairographics.org/mailman/listinfo/cairo
> <https://lists.cairographics.org/mailman/listinfo/cairo>
--
Theo Veenker | Beexy - Behavioral Experiment Software
+31(0)524-541531 | +31(0)6-42525777 mobile
theo.veenker@beexy.nl | www.beexy.nl
--
cairo mailing list
cairo@cairographics.org
https://lists.cairographics.org/mailman/listinfo/cairo
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic