/* * java-gnome, a UI library for writing GTK and GNOME programs from Java! * * Copyright © 2009-2010 Operational Dynamics Consulting, Pty Ltd * * The code in this file, and the program it is a part of, is made available * to you by its authors as open source software: you can redistribute it * and/or modify it under the terms of the GNU General Public License version * 2 ("GPL") as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GPL for more details. * * You should have received a copy of the GPL along with this program. If not, * see http://www.gnu.org/licenses/. The authors of this program may be * contacted through http://java-gnome.sourceforge.net/. * * Linking this library statically or dynamically with other modules is making * a combined work based on this library. Thus, the terms and conditions of * the GPL cover the whole combination. As a special exception (the * "Claspath Exception"), the copyright holders of this library give you * permission to link this library with independent modules to produce an * executable, regardless of the license terms of these independent modules, * and to copy and distribute the resulting executable under terms of your * choice, provided that you also meet, for each linked independent module, * the terms and conditions of the license of that module. An independent * module is a module which is not derived from or based on this library. If * you modify this library, you may extend the Classpath Exception to your * version of the library, but you are not obligated to do so. If you do not * wish to do so, delete this exception statement from your version. */ package org.freedesktop.cairo; /** * Configuration of how hinting will be employed (by Pango, actually) when * rendering text. * *

* This is mostly used to achieve clean linear scaling by chosing * {@link HintMetrics#OFF}. See * {@link org.gnome.pango.Context#setFontOptions(FontOptions) * setFontOptions()} for an example of using this in practice. * * @author Andrew Cowie * @since 4.0.17 */ /* * Thanks to Behdad Esfahbod for explaining the need for turning hinting off. */ public class FontOptions extends Entity { protected FontOptions(long pointer) { super(pointer); } /** * Create a FontOptions instance allowing you to get at various font * rendering configuration parameters. * * @since 4.0.10 */ public FontOptions() { super(CairoFontOptions.createFontOptions()); checkStatus(); } protected final void release() { CairoFontOptions.destroy(this); } protected void checkStatus() { checkStatus(CairoFontOptions.status(this)); } /** * Whether or not you want hinting. For normal rendering you certainly do * (and this is likely the default) but for the rare case where you need * multiple versions of the same text to be identical across linear * scaling, then you'll need this {@link HintMetrics#OFF OFF}. * * @since 4.0.10 */ public void setHintMetrics(HintMetrics hinting) { CairoFontOptions.setHintMetrics(this, hinting); checkStatus(); } /** * Which style of hinting to employ. * * @since 4.0.17 */ public void setHintStyle(HintStyle hinting) { CairoFontOptions.setHintStyle(this, hinting); checkStatus(); } }