hb-subset-repacker.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /*
  2. * Copyright © 2022 Google, Inc.
  3. *
  4. * This is part of HarfBuzz, a text shaping library.
  5. *
  6. * Permission is hereby granted, without written agreement and without
  7. * license or royalty fees, to use, copy, modify, and distribute this
  8. * software and its documentation for any purpose, provided that the
  9. * above copyright notice and the following two paragraphs appear in
  10. * all copies of this software.
  11. *
  12. * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
  13. * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
  14. * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
  15. * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
  16. * DAMAGE.
  17. *
  18. * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
  19. * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  20. * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
  21. * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
  22. * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
  23. *
  24. */
  25. #ifndef HB_SUBSET_REPACKER_H
  26. #define HB_SUBSET_REPACKER_H
  27. #include "hb.h"
  28. HB_BEGIN_DECLS
  29. #ifdef HB_EXPERIMENTAL_API
  30. /*
  31. * struct hb_link_t
  32. * width: offsetSize in bytes
  33. * position: position of the offset field in bytes
  34. * from beginning of subtable
  35. * objidx: index of subtable
  36. */
  37. struct hb_link_t
  38. {
  39. unsigned width;
  40. unsigned position;
  41. unsigned objidx;
  42. };
  43. typedef struct hb_link_t hb_link_t;
  44. /*
  45. * struct hb_object_t
  46. * head: start of object data
  47. * tail: end of object data
  48. * num_real_links: num of offset field in the object
  49. * real_links: pointer to array of offset info
  50. * num_virtual_links: num of objects that must be packed
  51. * after current object in the final serialized order
  52. * virtual_links: array of virtual link info
  53. */
  54. struct hb_object_t
  55. {
  56. char *head;
  57. char *tail;
  58. unsigned num_real_links;
  59. hb_link_t *real_links;
  60. unsigned num_virtual_links;
  61. hb_link_t *virtual_links;
  62. };
  63. typedef struct hb_object_t hb_object_t;
  64. HB_EXTERN hb_blob_t*
  65. hb_subset_repack_or_fail (hb_tag_t table_tag,
  66. hb_object_t* hb_objects,
  67. unsigned num_hb_objs);
  68. #endif
  69. HB_END_DECLS
  70. #endif /* HB_SUBSET_REPACKER_H */