Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8298257

Kerning information from font

XMLWordPrintable

    • 2d
    • x86_64
    • linux

      A DESCRIPTION OF THE PROBLEM :
      Using kerning information, text would be more beautiful. Font doesn't provide api.

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      1, New a font.


      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      Can get kerning from font
      ACTUAL -
      Can't find a api for kerning

      CUSTOMER SUBMITTED WORKAROUND :
      <Link1>
      <Link2>
      freetypeScaler.c
      freetypeScaler.c:
      JNIEXPORT jfloat JNICALL
      Java_sun_font_FreetypeFontScaler_getKerningNative(
              JNIEnv *env, jobject scaler,
              jlong pScaler,
              jint left_glyph,
              jint right_glyph) {
          int fixed_xy[2];

          FTScalerInfo *scalerInfo =
                   (FTScalerInfo*) jlong_to_ptr(pScaler);

          FT_TS_Get_Kerning(scalerInfo->face, left_glyph, right_glyph,
                                  FT_TS_KERNING_UNFITTED, fixed_xy);

          return FT26Dot6ToFloat(fixed_xy[0]);
      }

      FreetypeFontScaler:
          @Override
          public synchronized float getKerning(
                  int leftGlyph,
                  int rightGlyph) {
              if (nativeScaler != 0L) {
                  return getKerningNative(nativeScaler,
                                          leftGlyph, rightGlyph);
              }
              return 0;
          }

      Font.java
          public float getKerning(char left, char right)
          {
              if (isTrueType())
              {
                  TrueTypeFont ttf = ((TrueTypeFont)font2DHandle.font2D);
                  return ttf.getScaler().getKerning(ttf.charToGlyph(left), ttf.charToGlyph(right));
              }
              return 0;
          }
          private boolean isTrueType()
          {
              if (font2DHandle == null)
              {
                  getFont2D();
              }
              return (font2DHandle != null && (font2DHandle.font2D instanceof TrueTypeFont));
          }


            prr Philip Race
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: