anchor.diff:        end;
   begin
     SelectFont(Handle, ctfSelected);
  -  SelectSupportedFontForText(Handle, Text);
     Result := DoCalcTextSize;
   end;
   
  
positive.code:   end;
  end;
  
  procedure TClearTypeDrawCharacter.SelectFallbackFont(Handle: THandle; const Text: WideString);
  var
    uc: DWord;
  begin
    try
      uc := Char.ConvertToUtf32(Text, 0);  // I3310
    except
      on E:EArgumentOutOfRangeException do
        uc := $FFFD;  // Not a character, invalid Unicode
    end;
    if uc < $10000 then      SelectFont(Handle, ctfCode2000)
    else if uc < $20000 then SelectFont(Handle, ctfCode2001)
    else if uc < $30000 then SelectFont(Handle, ctfCode2002)
    else
    begin
      SelectFont(Handle, ctfSelected);
      Exit;
    end;
    SetTextColor(Handle, ColorToRGB(clBlue));
  end;
  
  function TClearTypeDrawCharacter.SelectSupportedFontForText(Handle: THandle; const Text: WideString): Boolean;
  var
    ch: Integer;
  begin
    Result := True;
    if not GetGlyphIndex(Handle, Text, ch) then
      Result := False
    else if ch = $FFFF then
      SelectFallbackFont(Handle, Text);
  end;
  
  procedure TClearTypeDrawCharacter.DrawText(Handle: THandle; TextAlign, X, Y: Integer; ARect: TRect; const Text: WideString; Fit: Boolean = False; Uniscribe: Boolean = False);
  var
  
negative.code:       cch: Integer; FitRect, Uniscribe: Boolean): HRESULT;
      procedure CreateFonts;
      procedure SetShowPrefix(const Value: Boolean);
      function GetGlyphIndex(Handle: THandle; const Text: WideString;
        var Index: Integer): Boolean;
      function SelectFont(Handle: THandle; FFont: TClearTypeFont): THandle;
      procedure FreeFonts;
    public
      constructor Create;
  