pango r2607 - in trunk: . docs docs/tmpl pango
- From: behdad svn gnome org
- To: svn-commits-list gnome org
- Subject: pango r2607 - in trunk: . docs docs/tmpl pango
- Date: Tue, 22 Apr 2008 00:56:37 +0100 (BST)
Author: behdad
Date: Mon Apr 21 23:56:37 2008
New Revision: 2607
URL: http://svn.gnome.org/viewvc/pango?rev=2607&view=rev
Log:
2008-04-21 Behdad Esfahbod <behdad gnome org>
Bug 515432 â Add function to get bidirectional character type of a
unicode character
Patch from JÃrg Billeter
* docs/pango-sections.txt:
* docs/tmpl/layout.sgml:
* docs/tmpl/main.sgml:
* docs/tmpl/pangocairo.sgml:
* pango/Makefile.am:
* pango/pango-bidi-type.c (pango_bidi_type_for_unichar):
* pango/pango-bidi-type.h:
* pango/pango-types.h:
* pango/pango-utils.c (pango_log2vis_get_embedding_levels),
(pango_unichar_direction):
* pango/pango.def:
* pango/pango.h:
New public API:
enum PangoBidiType;
pango_bidi_type_get_type()
pango_bidi_type_for_unichar()
Added:
trunk/pango/pango-bidi-type.c
trunk/pango/pango-bidi-type.h
Modified:
trunk/ChangeLog
trunk/docs/pango-sections.txt
trunk/docs/tmpl/layout.sgml
trunk/docs/tmpl/main.sgml
trunk/docs/tmpl/pangocairo.sgml
trunk/pango/Makefile.am
trunk/pango/pango-types.h
trunk/pango/pango-utils.c
trunk/pango/pango.def
trunk/pango/pango.h
Modified: trunk/docs/pango-sections.txt
==============================================================================
--- trunk/docs/pango-sections.txt (original)
+++ trunk/docs/pango-sections.txt Mon Apr 21 23:56:37 2008
@@ -41,7 +41,10 @@
pango_get_mirror_char
pango_unichar_direction
pango_find_base_dir
+PangoBidiType
+pango_bidi_type_for_unichar
<SUBSECTION Standard>
+PANGO_TYPE_BIDI_TYPE
PANGO_TYPE_CONTEXT
PangoContextClass
PANGO_CONTEXT
@@ -60,6 +63,7 @@
pango_shape
<SUBSECTION Private>
+pango_bidi_type_get_type
pango_direction_get_type
pango_context_get_type
pango_item_get_type
Modified: trunk/docs/tmpl/layout.sgml
==============================================================================
--- trunk/docs/tmpl/layout.sgml (original)
+++ trunk/docs/tmpl/layout.sgml Mon Apr 21 23:56:37 2008
@@ -561,6 +561,15 @@
@height:
+<!-- ##### FUNCTION pango_layout_get_baseline ##### -->
+<para>
+
+</para>
+
+ layout:
+ Returns:
+
+
<!-- ##### FUNCTION pango_layout_get_line_count ##### -->
<para>
Modified: trunk/docs/tmpl/main.sgml
==============================================================================
--- trunk/docs/tmpl/main.sgml (original)
+++ trunk/docs/tmpl/main.sgml Mon Apr 21 23:56:37 2008
@@ -373,6 +373,40 @@
@Returns:
+<!-- ##### ENUM PangoBidiType ##### -->
+<para>
+
+</para>
+
+ PANGO_BIDI_TYPE_L:
+ PANGO_BIDI_TYPE_LRE:
+ PANGO_BIDI_TYPE_LRO:
+ PANGO_BIDI_TYPE_R:
+ PANGO_BIDI_TYPE_AL:
+ PANGO_BIDI_TYPE_RLE:
+ PANGO_BIDI_TYPE_RLO:
+ PANGO_BIDI_TYPE_PDF:
+ PANGO_BIDI_TYPE_EN:
+ PANGO_BIDI_TYPE_ES:
+ PANGO_BIDI_TYPE_ET:
+ PANGO_BIDI_TYPE_AN:
+ PANGO_BIDI_TYPE_CS:
+ PANGO_BIDI_TYPE_NSM:
+ PANGO_BIDI_TYPE_BN:
+ PANGO_BIDI_TYPE_B:
+ PANGO_BIDI_TYPE_S:
+ PANGO_BIDI_TYPE_WS:
+ PANGO_BIDI_TYPE_ON:
+
+<!-- ##### FUNCTION pango_bidi_type_for_unichar ##### -->
+<para>
+
+</para>
+
+ ch:
+ Returns:
+
+
<!-- ##### FUNCTION pango_break ##### -->
<para>
Modified: trunk/docs/tmpl/pangocairo.sgml
==============================================================================
--- trunk/docs/tmpl/pangocairo.sgml (original)
+++ trunk/docs/tmpl/pangocairo.sgml Mon Apr 21 23:56:37 2008
@@ -308,6 +308,15 @@
@Returns:
+<!-- ##### FUNCTION pango_cairo_create_context ##### -->
+<para>
+
+</para>
+
+ cr:
+ Returns:
+
+
<!-- ##### FUNCTION pango_cairo_update_context ##### -->
<para>
Modified: trunk/pango/Makefile.am
==============================================================================
--- trunk/pango/Makefile.am (original)
+++ trunk/pango/Makefile.am Mon Apr 21 23:56:37 2008
@@ -66,6 +66,7 @@
glyphstring.c \
modules.c \
pango-attributes.c \
+ pango-bidi-type.c \
pango-color.c \
pango-color-table.h \
pango-context.c \
@@ -97,6 +98,7 @@
pango_headers = \
pango.h \
pango-attributes.h \
+ pango-bidi-type.h \
pango-break.h \
pango-context.h \
pango-coverage.h \
Added: trunk/pango/pango-bidi-type.c
==============================================================================
--- (empty file)
+++ trunk/pango/pango-bidi-type.c Mon Apr 21 23:56:37 2008
@@ -0,0 +1,75 @@
+/* Pango
+ * pango-bidi-type.c: Bidirectional Character Types
+ *
+ * Copyright (C) 2008 JÃrg Billeter <j bitron ch>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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 GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <config.h>
+
+#include "pango-bidi-type.h"
+
+#include "mini-fribidi/fribidi.h"
+
+
+
+/**
+ * pango_bidi_type_for_unichar
+ * @ch: a Unicode character
+ *
+ * Determines the normative bidirectional character type of a
+ * character, as specified in the Unicode Character Database.
+ *
+ * A simplified version of this function is available as
+ * pango_unichar_get_direction().
+ *
+ * Return value: the bidirectional character type, as used in the
+ * Unicode bidirectional algorithm.
+ *
+ * Since: 1.22
+ */
+PangoBidiType
+pango_bidi_type_for_unichar (gunichar ch)
+{
+ FriBidiCharType fribidi_ch_type = fribidi_get_type (ch);
+
+ switch (fribidi_ch_type)
+ {
+ case FRIBIDI_TYPE_LTR: return PANGO_BIDI_TYPE_L;
+ case FRIBIDI_TYPE_LRE: return PANGO_BIDI_TYPE_LRE;
+ case FRIBIDI_TYPE_LRO: return PANGO_BIDI_TYPE_LRO;
+ case FRIBIDI_TYPE_RTL: return PANGO_BIDI_TYPE_R;
+ case FRIBIDI_TYPE_AL: return PANGO_BIDI_TYPE_AL;
+ case FRIBIDI_TYPE_RLE: return PANGO_BIDI_TYPE_RLE;
+ case FRIBIDI_TYPE_RLO: return PANGO_BIDI_TYPE_RLO;
+ case FRIBIDI_TYPE_PDF: return PANGO_BIDI_TYPE_PDF;
+ case FRIBIDI_TYPE_EN: return PANGO_BIDI_TYPE_EN;
+ case FRIBIDI_TYPE_ES: return PANGO_BIDI_TYPE_ES;
+ case FRIBIDI_TYPE_ET: return PANGO_BIDI_TYPE_ET;
+ case FRIBIDI_TYPE_AN: return PANGO_BIDI_TYPE_AN;
+ case FRIBIDI_TYPE_CS: return PANGO_BIDI_TYPE_CS;
+ case FRIBIDI_TYPE_NSM: return PANGO_BIDI_TYPE_NSM;
+ case FRIBIDI_TYPE_BN: return PANGO_BIDI_TYPE_BN;
+ case FRIBIDI_TYPE_BS: return PANGO_BIDI_TYPE_B;
+ case FRIBIDI_TYPE_SS: return PANGO_BIDI_TYPE_S;
+ case FRIBIDI_TYPE_WS: return PANGO_BIDI_TYPE_WS;
+ case FRIBIDI_TYPE_ON: return PANGO_BIDI_TYPE_ON;
+ default:
+ g_assert_not_reached ();
+ return PANGO_BIDI_TYPE_ON;
+ }
+}
Added: trunk/pango/pango-bidi-type.h
==============================================================================
--- (empty file)
+++ trunk/pango/pango-bidi-type.h Mon Apr 21 23:56:37 2008
@@ -0,0 +1,88 @@
+/* Pango
+ * pango-bidi-type.h: Bidirectional Character Types
+ *
+ * Copyright (C) 2008 JÃrg Billeter <j bitron ch>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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 GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __PANGO_BIDI_TYPE_H__
+#define __PANGO_BIDI_TYPE_H__
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+/**
+ * PangoBidiType:
+ * @PANGO_BIDI_TYPE_L: Left-to-Right
+ * @PANGO_BIDI_TYPE_LRE: Left-to-Right Embedding
+ * @PANGO_BIDI_TYPE_LRO: Left-to-Right Override
+ * @PANGO_BIDI_TYPE_R: Right-to-Left
+ * @PANGO_BIDI_TYPE_AL: Right-to-Left Arabic
+ * @PANGO_BIDI_TYPE_RLE: Right-to-Left Embedding
+ * @PANGO_BIDI_TYPE_RLO: Right-to-Left Override
+ * @PANGO_BIDI_TYPE_PDF: Pop Directional Format
+ * @PANGO_BIDI_TYPE_EN: European Number
+ * @PANGO_BIDI_TYPE_ES: European Number Separator
+ * @PANGO_BIDI_TYPE_ET: European Number Terminator
+ * @PANGO_BIDI_TYPE_AN: Arabic Number
+ * @PANGO_BIDI_TYPE_CS: Common Number Separator
+ * @PANGO_BIDI_TYPE_NSM: Nonspacing Mark
+ * @PANGO_BIDI_TYPE_BN: Boundary Neutral
+ * @PANGO_BIDI_TYPE_B: Paragraph Separator
+ * @PANGO_BIDI_TYPE_S: Segment Separator
+ * @PANGO_BIDI_TYPE_WS: Whitespace
+ * @PANGO_BIDI_TYPE_ON: Other Neutrals
+ *
+ * The #PangoBidiType type represents the bidirectional character
+ * type of a Unicode character as specified by the
+ * <ulink url="http://www.unicode.org/reports/tr9/">Unicode bidirectional algorithm</ulink>.
+ *
+ * Since: 1.22
+ **/
+typedef enum {
+ /* Strong types */
+ PANGO_BIDI_TYPE_L,
+ PANGO_BIDI_TYPE_LRE,
+ PANGO_BIDI_TYPE_LRO,
+ PANGO_BIDI_TYPE_R,
+ PANGO_BIDI_TYPE_AL,
+ PANGO_BIDI_TYPE_RLE,
+ PANGO_BIDI_TYPE_RLO,
+
+ /* Weak types */
+ PANGO_BIDI_TYPE_PDF,
+ PANGO_BIDI_TYPE_EN,
+ PANGO_BIDI_TYPE_ES,
+ PANGO_BIDI_TYPE_ET,
+ PANGO_BIDI_TYPE_AN,
+ PANGO_BIDI_TYPE_CS,
+ PANGO_BIDI_TYPE_NSM,
+ PANGO_BIDI_TYPE_BN,
+
+ /* Neutral types */
+ PANGO_BIDI_TYPE_B,
+ PANGO_BIDI_TYPE_S,
+ PANGO_BIDI_TYPE_WS,
+ PANGO_BIDI_TYPE_ON
+} PangoBidiType;
+
+PangoBidiType pango_bidi_type_for_unichar (gunichar ch) G_GNUC_CONST;
+
+G_END_DECLS
+
+#endif /* __PANGO_BIDI_TYPE_H__ */
Modified: trunk/pango/pango-types.h
==============================================================================
--- trunk/pango/pango-types.h (original)
+++ trunk/pango/pango-types.h Mon Apr 21 23:56:37 2008
@@ -139,6 +139,7 @@
#include <pango/pango-language.h>
#include <pango/pango-matrix.h>
#include <pango/pango-script.h>
+#include <pango/pango-bidi-type.h>
G_END_DECLS
Modified: trunk/pango/pango-utils.c
==============================================================================
--- trunk/pango/pango-utils.c (original)
+++ trunk/pango/pango-utils.c Mon Apr 21 23:56:37 2008
@@ -1128,10 +1128,8 @@
case PANGO_DIRECTION_WEAK_RTL:
fribidi_base_dir = FRIBIDI_TYPE_WR;
break;
- /*
case PANGO_DIRECTION_WEAK_LTR:
case PANGO_DIRECTION_NEUTRAL:
- */
default:
fribidi_base_dir = FRIBIDI_TYPE_WL;
break;
@@ -1165,19 +1163,23 @@
* pango_unichar_direction:
* @ch: a Unicode character
*
- * Determines the direction of a character; either
+ * Determines the inherent direction of a character; either
* %PANGO_DIRECTION_LTR, %PANGO_DIRECTION_RTL, or
* %PANGO_DIRECTION_NEUTRAL.
*
- * Return value: the direction of the character, as used in the
- * Unicode bidirectional algorithm.
+ * This function is useful to categorize characters into left-to-right
+ * letters, right-to-left letters, and everything else. If full
+ * Unicode bidirectional type of a character is needed,
+ * pango_bidi_type_for_gunichar() can be used instead.
+ *
+ * Return value: the direction of the character.
*/
PangoDirection
pango_unichar_direction (gunichar ch)
{
FriBidiCharType fribidi_ch_type = fribidi_get_type (ch);
- if (!FRIBIDI_IS_LETTER (fribidi_ch_type))
+ if (!FRIBIDI_IS_STRONG (fribidi_ch_type))
return PANGO_DIRECTION_NEUTRAL;
else if (FRIBIDI_IS_RTL (fribidi_ch_type))
return PANGO_DIRECTION_RTL;
Modified: trunk/pango/pango.def
==============================================================================
--- trunk/pango/pango.def (original)
+++ trunk/pango/pango.def Mon Apr 21 23:56:37 2008
@@ -48,6 +48,8 @@
pango_attribute_copy
pango_attribute_destroy
pango_attribute_equal
+ pango_bidi_type_for_unichar
+ pango_bidi_type_get_type
pango_break
pango_color_copy
pango_color_free
Modified: trunk/pango/pango.h
==============================================================================
--- trunk/pango/pango.h (original)
+++ trunk/pango/pango.h Mon Apr 21 23:56:37 2008
@@ -23,6 +23,7 @@
#define __PANGO_H__
#include <pango/pango-attributes.h>
+#include <pango/pango-bidi-type.h>
#include <pango/pango-break.h>
#include <pango/pango-context.h>
#include <pango/pango-coverage.h>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]