< prev index next >

src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ft.cc

Print this page




 480 
 481 static hb_blob_t *
 482 reference_table  (hb_face_t *face HB_UNUSED, hb_tag_t tag, void *user_data)
 483 {
 484   FT_Face ft_face = (FT_Face) user_data;
 485   FT_Byte *buffer;
 486   FT_ULong  length = 0;
 487   FT_Error error;
 488 
 489   /* Note: FreeType like HarfBuzz uses the NONE tag for fetching the entire blob */
 490 
 491   error = FT_Load_Sfnt_Table (ft_face, tag, 0, nullptr, &length);
 492   if (error)
 493     return nullptr;
 494 
 495   buffer = (FT_Byte *) malloc (length);
 496   if (!buffer)
 497     return nullptr;
 498 
 499   error = FT_Load_Sfnt_Table (ft_face, tag, 0, buffer, &length);
 500   if (error)

 501     return nullptr;

 502 
 503   return hb_blob_create ((const char *) buffer, length,
 504                          HB_MEMORY_MODE_WRITABLE,
 505                          buffer, free);
 506 }
 507 
 508 /**
 509  * hb_ft_face_create:
 510  * @ft_face: (destroy destroy) (scope notified):
 511  * @destroy:
 512  *
 513  *
 514  *
 515  * Return value: (transfer full):
 516  * Since: 0.9.2
 517  **/
 518 hb_face_t *
 519 hb_ft_face_create (FT_Face           ft_face,
 520                    hb_destroy_func_t destroy)
 521 {




 480 
 481 static hb_blob_t *
 482 reference_table  (hb_face_t *face HB_UNUSED, hb_tag_t tag, void *user_data)
 483 {
 484   FT_Face ft_face = (FT_Face) user_data;
 485   FT_Byte *buffer;
 486   FT_ULong  length = 0;
 487   FT_Error error;
 488 
 489   /* Note: FreeType like HarfBuzz uses the NONE tag for fetching the entire blob */
 490 
 491   error = FT_Load_Sfnt_Table (ft_face, tag, 0, nullptr, &length);
 492   if (error)
 493     return nullptr;
 494 
 495   buffer = (FT_Byte *) malloc (length);
 496   if (!buffer)
 497     return nullptr;
 498 
 499   error = FT_Load_Sfnt_Table (ft_face, tag, 0, buffer, &length);
 500   if (error) {
 501     free (buffer);
 502     return nullptr;
 503   }
 504 
 505   return hb_blob_create ((const char *) buffer, length,
 506                          HB_MEMORY_MODE_WRITABLE,
 507                          buffer, free);
 508 }
 509 
 510 /**
 511  * hb_ft_face_create:
 512  * @ft_face: (destroy destroy) (scope notified):
 513  * @destroy:
 514  *
 515  *
 516  *
 517  * Return value: (transfer full):
 518  * Since: 0.9.2
 519  **/
 520 hb_face_t *
 521 hb_ft_face_create (FT_Face           ft_face,
 522                    hb_destroy_func_t destroy)
 523 {


< prev index next >