summaryrefslogtreecommitdiff
path: root/src/include/unicode.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/unicode.h')
-rw-r--r--src/include/unicode.h41
1 files changed, 40 insertions, 1 deletions
diff --git a/src/include/unicode.h b/src/include/unicode.h
index 90dab113..d5351c35 100644
--- a/src/include/unicode.h
+++ b/src/include/unicode.h
@@ -1,5 +1,5 @@
// -*- C++ -*-
-/* Copyright (C) 2002, 2003
+/* Copyright (C) 2002, 2003, 2006
Free Software Foundation, Inc.
Written by Werner Lemberg <wl@gnu.org>
@@ -19,8 +19,47 @@ You should have received a copy of the GNU General Public License along
with groff; see the file COPYING. If not, write to the Free Software
Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. */
+// Convert a groff glyph name to a string containing an underscore-separated
+// list of Unicode code points. For example,
+//
+// `-' -> `2010'
+// `,c' -> `00E7'
+// `fl' -> `0066_006C'
+//
+// Return NULL if there is no equivalent.
const char *glyph_name_to_unicode(const char *);
+
+// Convert a string containing an underscore-separated list of Unicode code
+// points to a groff glyph name. For example,
+//
+// `2010' -> `hy'
+// `0066_006C' -> `fl'
+//
+// Return NULL if there is no equivalent.
const char *unicode_to_glyph_name(const char *);
+
+// Convert a string containing a precomposed Unicode character to a string
+// containing an underscore-separated list of Unicode code points,
+// representing its canonical decomposition. Also perform compatibility
+// equivalent replacement. For example,
+//
+// `1F3A' -> `0399_0313_0300'
+// `FA6A' -> `983B'
+//
+// Return NULL if there is no equivalent.
const char *decompose_unicode(const char *);
+// Test whether the given string denotes a Unicode character. It must
+// be of the form `uNNNN', obeying the following rules.
+//
+// - `NNNN' must consist of at least 4 hexadecimal digits in upper case.
+// - If there are more than 4 hexadecimal digits, the leading one must not
+// be zero,
+// - `NNNN' must denote a valid Unicode code point (U+0000..U+10FFFF,
+// excluding surrogate code points.
+//
+// Return a pointer to `NNNN' (skipping the leading `u' character) in case
+// of success, NULL otherwise.
const char *check_unicode_name(const char *);
+
+// end of unicode.h