test-size-params.cc revision 0f3f5299047e3cfc4d1202fee83d484b871279ad
10f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod/* 20f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod * Copyright © 2010,2011 Google, Inc. 30f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod * 40f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod * This is part of HarfBuzz, a text shaping library. 50f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod * 60f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod * Permission is hereby granted, without written agreement and without 70f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod * license or royalty fees, to use, copy, modify, and distribute this 80f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod * software and its documentation for any purpose, provided that the 90f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod * above copyright notice and the following two paragraphs appear in 100f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod * all copies of this software. 110f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod * 120f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR 130f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 140f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN 150f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 160f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod * DAMAGE. 170f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod * 180f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, 190f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 200f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 210f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO 220f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 230f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod * 240f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod * Google Author(s): Behdad Esfahbod 250f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod */ 260f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod 270f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod#ifdef HAVE_CONFIG_H 280f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod#include "config.h" 290f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod#endif 300f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod 310f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod#include "hb.h" 320f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod#include "hb-ot.h" 330f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod 340f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod#ifdef HAVE_GLIB 350f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod#include <glib.h> 360f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod#endif 370f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod#include <stdlib.h> 380f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod#include <stdio.h> 390f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod 400f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbodint 410f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbodmain (int argc, char **argv) 420f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod{ 430f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod hb_blob_t *blob = NULL; 440f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod 450f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod if (argc != 2) { 460f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod fprintf (stderr, "usage: %s font-file\n", argv[0]); 470f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod exit (1); 480f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod } 490f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod 500f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod /* Create the blob */ 510f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod { 520f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod const char *font_data; 530f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod unsigned int len; 540f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod hb_destroy_func_t destroy; 550f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod void *user_data; 560f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod hb_memory_mode_t mm; 570f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod 580f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod#ifdef HAVE_GLIB 590f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod GMappedFile *mf = g_mapped_file_new (argv[1], false, NULL); 600f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod font_data = g_mapped_file_get_contents (mf); 610f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod len = g_mapped_file_get_length (mf); 620f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod destroy = (hb_destroy_func_t) g_mapped_file_unref; 630f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod user_data = (void *) mf; 640f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod mm = HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE; 650f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod#else 660f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod FILE *f = fopen (argv[1], "rb"); 670f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod fseek (f, 0, SEEK_END); 680f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod len = ftell (f); 690f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod fseek (f, 0, SEEK_SET); 700f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod font_data = (const char *) malloc (len); 710f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod if (!font_data) len = 0; 720f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod len = fread ((char *) font_data, 1, len, f); 730f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod destroy = free; 740f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod user_data = (void *) font_data; 750f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod fclose (f); 760f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod mm = HB_MEMORY_MODE_WRITABLE; 770f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod#endif 780f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod 790f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod blob = hb_blob_create (font_data, len, mm, user_data, destroy); 800f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod } 810f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod 820f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod /* Create the face */ 830f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod hb_face_t *face = hb_face_create (blob, 0 /* first face */); 840f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod hb_blob_destroy (blob); 850f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod blob = NULL; 860f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod 870f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod uint16_t params[5]; 880f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod if (!hb_ot_layout_get_size_params (face, params)) 890f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod return 1; 900f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod 910f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod for (unsigned int i = 0; i < 5; i++) { 920f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod if (i) printf (" "); 930f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod printf ("%u", params[i]); 940f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod } 950f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod printf ("\n"); 960f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod 970f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod return 0; 980f3f5299047e3cfc4d1202fee83d484b871279adBehdad Esfahbod} 99