summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/luatexdir/font/writeenc.c
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/font/writeenc.c')
-rw-r--r--Build/source/texk/web2c/luatexdir/font/writeenc.c187
1 files changed, 0 insertions, 187 deletions
diff --git a/Build/source/texk/web2c/luatexdir/font/writeenc.c b/Build/source/texk/web2c/luatexdir/font/writeenc.c
deleted file mode 100644
index e0cd7bc43a0..00000000000
--- a/Build/source/texk/web2c/luatexdir/font/writeenc.c
+++ /dev/null
@@ -1,187 +0,0 @@
-/* writeenc.c
-
- Copyright 1996-2006 Han The Thanh <thanh@pdftex.org>
- Copyright 2006-2008 Taco Hoekwater <taco@luatex.org>
-
- This file is part of LuaTeX.
-
- LuaTeX is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free
- Software Foundation; either version 2 of the License, or (at your
- option) any later version.
-
- LuaTeX 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 Lesser General Public
- License for more details.
-
- You should have received a copy of the GNU General Public License along
- with LuaTeX; if not, see <http://www.gnu.org/licenses/>. */
-
-#include "ptexlib.h"
-#include "inc-epdf.h"
-
-static const char _svn_version[] =
- "$Id: writeenc.c 2448 2009-06-08 07:43:50Z taco $ $URL: http://foundry.supelec.fr/svn/luatex/tags/beta-0.40.6/source/texk/web2c/luatexdir/font/writeenc.c $";
-
-/**********************************************************************/
-/* All encoding entries go into AVL tree for fast search by name. */
-
-struct avl_table *fe_tree = NULL;
-
-/* AVL sort fe_entry into fe_tree by name */
-
-static int comp_fe_entry(const void *pa, const void *pb, void *p)
-{
- (void) p;
- return strcmp(((const fe_entry *) pa)->name, ((const fe_entry *) pb)->name);
-}
-
-static fe_entry *new_fe_entry(void)
-{
- fe_entry *fe;
- fe = xtalloc(1, fe_entry);
- fe->name = NULL;
- fe->fe_objnum = 0;
- fe->glyph_names = NULL; /* encoding file not yet read in */
- fe->tx_tree = NULL;
- return fe;
-}
-
-static fe_entry *lookup_fe_entry(char *s)
-{
- fe_entry fe;
- assert(s != NULL);
- fe.name = s;
- if (fe_tree == NULL) {
- fe_tree = avl_create(comp_fe_entry, NULL, &avl_xallocator);
- assert(fe_tree != NULL);
- }
- return (fe_entry *) avl_find(fe_tree, &fe);
-}
-
-static void register_fe_entry(fe_entry * fe)
-{
- void **aa;
- if (fe_tree == NULL) {
- fe_tree = avl_create(comp_fe_entry, NULL, &avl_xallocator);
- assert(fe_tree != NULL);
- }
- assert(fe != NULL);
- assert(fe->name != NULL);
- assert(lookup_fe_entry(fe->name) == NULL); /* encoding not yet registered */
- aa = avl_probe(fe_tree, fe);
- assert(aa != NULL);
-}
-
-fe_entry *get_fe_entry(char *s)
-{
- fe_entry *fe;
- char **gl;
- if ((fe = lookup_fe_entry(s)) == NULL && (gl = load_enc_file(s)) != NULL) {
- fe = new_fe_entry();
- fe->name = s;
- fe->glyph_names = gl;
- register_fe_entry(fe);
- }
- return fe;
-}
-
-/**********************************************************************/
-
-void epdf_write_enc(char **glyph_names, integer fe_objnum)
-{
- int i, i_old;
- assert(glyph_names != NULL);
- assert(fe_objnum != 0);
- pdf_begin_dict(fe_objnum, 1);
- pdf_puts("/Type /Encoding\n");
- pdf_puts("/Differences [");
- for (i = 0, i_old = -2; i < 256; i++)
- if (glyph_names[i] != notdef) {
- if (i == i_old + 1) /* no gap */
- pdf_printf("/%s", glyph_names[i]);
- else {
- if (i_old == -2)
- pdf_printf("%i/%s", i, glyph_names[i]);
- else
- pdf_printf(" %i/%s", i, glyph_names[i]);
- }
- i_old = i;
- }
- pdf_puts("]\n");
- pdf_end_dict();
-}
-
-static void write_enc(char **glyph_names, struct avl_table *tx_tree, integer fe_objnum)
-{
- int i_old, *p;
- struct avl_traverser t;
- assert(glyph_names != NULL);
- assert(tx_tree != NULL);
- assert(fe_objnum != 0);
- pdf_begin_dict(fe_objnum, 1);
- pdf_puts("/Type /Encoding\n");
- pdf_puts("/Differences [");
- avl_t_init(&t, tx_tree);
- for (i_old = -2, p = (int *) avl_t_first(&t, tx_tree); p != NULL;
- p = (int *) avl_t_next(&t)) {
- if (*p == i_old + 1) /* no gap */
- pdf_printf("/%s", glyph_names[*p]);
- else {
- if (i_old == -2)
- pdf_printf("%i/%s", *p, glyph_names[*p]);
- else
- pdf_printf(" %i/%s", *p, glyph_names[*p]);
- }
- i_old = *p;
- }
- pdf_puts("]\n");
- pdf_end_dict();
-}
-
-static void write_fontencoding(fe_entry * fe)
-{
- assert(fe != NULL);
- write_enc(fe->glyph_names, fe->tx_tree, fe->fe_objnum);
-}
-
-void write_fontencodings(void)
-{
- fe_entry *fe;
- struct avl_traverser t;
- if (fe_tree == NULL)
- return;
- avl_t_init(&t, fe_tree);
- for (fe = (fe_entry *) avl_t_first(&t, fe_tree); fe != NULL;
- fe = (fe_entry *) avl_t_next(&t))
- if (fe->fe_objnum != 0)
- write_fontencoding(fe);
-}
-
-/**********************************************************************/
-/* cleaning up... */
-
-static void destroy_fe_entry(void *pa, void *pb)
-{
- fe_entry *p;
- int i;
- (void) pb;
- p = (fe_entry *) pa;
- xfree(p->name);
- if (p->glyph_names != NULL)
- for (i = 0; i < 256; i++)
- if (p->glyph_names[i] != notdef)
- xfree(p->glyph_names[i]);
- xfree(p->glyph_names);
- xfree(p);
-}
-
-void enc_free(void)
-{
- if (fe_tree != NULL)
- avl_destroy(fe_tree, destroy_fe_entry);
- fe_tree = NULL;
-}
-
-/**********************************************************************/