2004-12-01 22:27:03 +00:00
|
|
|
/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
|
|
/* ***** BEGIN LICENSE BLOCK *****
|
2004-08-14 01:01:16 +00:00
|
|
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
|
|
*
|
|
|
|
* The contents of this file are subject to the Mozilla Public License Version
|
|
|
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
|
|
* the License. You may obtain a copy of the License at
|
|
|
|
* http://www.mozilla.org/MPL/
|
|
|
|
*
|
|
|
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
|
|
* for the specific language governing rights and limitations under the
|
|
|
|
* License.
|
|
|
|
*
|
|
|
|
* The Original Code is mozilla.org code.
|
|
|
|
*
|
2004-12-01 22:27:03 +00:00
|
|
|
* The Initial Developer of the Original Code is
|
|
|
|
* mozilla.org.
|
2005-10-08 05:09:42 +00:00
|
|
|
* Portions created by the Initial Developer are Copyright (C) 2005
|
2004-12-01 22:27:03 +00:00
|
|
|
* the Initial Developer. All Rights Reserved.
|
2004-08-14 01:01:16 +00:00
|
|
|
*
|
|
|
|
* Contributor(s):
|
2004-12-01 22:27:03 +00:00
|
|
|
* Stuart Parmenter <pavlov@pavlov.net>
|
2004-08-14 01:01:16 +00:00
|
|
|
*
|
|
|
|
* Alternatively, the contents of this file may be used under the terms of
|
|
|
|
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
|
|
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
|
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
|
|
* of those above. If you wish to allow use of your version of this file only
|
|
|
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
|
|
* use your version of this file under the terms of the MPL, indicate your
|
|
|
|
* decision by deleting the provisions above and replace them with the notice
|
|
|
|
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
|
|
* the provisions above, a recipient may use your version of this file under
|
|
|
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
2004-12-01 22:27:03 +00:00
|
|
|
*
|
|
|
|
* ***** END LICENSE BLOCK ***** */
|
2004-08-14 01:01:16 +00:00
|
|
|
|
2005-08-20 05:36:47 +00:00
|
|
|
#include "nsThebesFontMetrics.h"
|
2004-08-14 01:01:16 +00:00
|
|
|
#include "nsFont.h"
|
|
|
|
|
|
|
|
#include "nsString.h"
|
2005-10-08 05:09:42 +00:00
|
|
|
#include "nsAutoBuffer.h"
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <malloc.h>
|
2004-08-14 01:01:16 +00:00
|
|
|
|
2005-10-08 05:09:42 +00:00
|
|
|
NS_IMPL_ISUPPORTS1(nsThebesFontMetrics, nsIFontMetrics)
|
2004-08-14 01:01:16 +00:00
|
|
|
|
2005-10-08 05:09:42 +00:00
|
|
|
#include <stdlib.h>
|
2004-08-14 01:01:16 +00:00
|
|
|
|
2005-10-08 05:09:42 +00:00
|
|
|
#ifdef XP_WIN
|
|
|
|
#include "gfxWindowsFonts.h"
|
|
|
|
#endif
|
2004-08-14 01:01:16 +00:00
|
|
|
|
2005-10-08 05:09:42 +00:00
|
|
|
nsThebesFontMetrics::nsThebesFontMetrics()
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
2005-10-08 05:09:42 +00:00
|
|
|
mFontStyle = nsnull;
|
|
|
|
mFontGroup = nsnull;
|
2004-08-14 01:01:16 +00:00
|
|
|
}
|
|
|
|
|
2005-08-20 05:36:47 +00:00
|
|
|
nsThebesFontMetrics::~nsThebesFontMetrics()
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
2005-10-08 05:09:42 +00:00
|
|
|
delete mFontStyle;
|
|
|
|
delete mFontGroup;
|
2004-08-14 01:01:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
2005-08-20 05:36:47 +00:00
|
|
|
nsThebesFontMetrics::Init(const nsFont& aFont, nsIAtom* aLangGroup,
|
2005-10-08 05:09:42 +00:00
|
|
|
nsIDeviceContext *aContext)
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
2005-01-22 16:00:07 +00:00
|
|
|
mFont = aFont;
|
2004-08-14 01:01:16 +00:00
|
|
|
mLangGroup = aLangGroup;
|
2005-10-08 05:09:42 +00:00
|
|
|
mDeviceContext = (nsThebesDeviceContext*)aContext;
|
|
|
|
mDev2App = aContext->DevUnitsToAppUnits();
|
2004-08-14 01:01:16 +00:00
|
|
|
|
2005-10-08 05:09:42 +00:00
|
|
|
mFontStyle = new gfxFontStyle(aFont.style, aFont.variant,
|
|
|
|
aFont.weight, aFont.decorations,
|
|
|
|
(aFont.size * mDeviceContext->AppUnitsToDevUnits()), aFont.sizeAdjust);
|
2004-08-14 01:01:16 +00:00
|
|
|
|
2005-10-08 05:09:42 +00:00
|
|
|
#ifdef XP_WIN
|
|
|
|
mFontGroup = new gfxWindowsFontGroup(aFont.name, mFontStyle, (HWND)mDeviceContext->GetWidget());
|
|
|
|
#else
|
|
|
|
#error implement me
|
|
|
|
#endif
|
2004-08-14 01:01:16 +00:00
|
|
|
|
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
2005-08-20 05:36:47 +00:00
|
|
|
nsThebesFontMetrics::Destroy()
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
2005-10-08 05:09:42 +00:00
|
|
|
#define ROUND_TO_TWIPS(x) NSToCoordRound((x) * mDev2App)
|
|
|
|
|
|
|
|
gfxFont::Metrics nsThebesFontMetrics::GetMetrics()
|
|
|
|
{
|
|
|
|
return mFontGroup->GetFontList()[0]->GetMetrics();
|
|
|
|
}
|
|
|
|
|
2004-08-14 01:01:16 +00:00
|
|
|
NS_IMETHODIMP
|
2005-08-20 05:36:47 +00:00
|
|
|
nsThebesFontMetrics::GetXHeight(nscoord& aResult)
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
2005-10-08 05:09:42 +00:00
|
|
|
aResult = ROUND_TO_TWIPS(GetMetrics().xHeight);
|
2004-08-14 01:01:16 +00:00
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
2005-08-20 05:36:47 +00:00
|
|
|
nsThebesFontMetrics::GetSuperscriptOffset(nscoord& aResult)
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
2005-10-08 05:09:42 +00:00
|
|
|
aResult = ROUND_TO_TWIPS(GetMetrics().superscriptOffset);
|
2004-08-14 01:01:16 +00:00
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
2005-08-20 05:36:47 +00:00
|
|
|
nsThebesFontMetrics::GetSubscriptOffset(nscoord& aResult)
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
2005-10-08 05:09:42 +00:00
|
|
|
aResult = ROUND_TO_TWIPS(GetMetrics().subscriptOffset);
|
2004-08-14 01:01:16 +00:00
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
2005-08-20 05:36:47 +00:00
|
|
|
nsThebesFontMetrics::GetStrikeout(nscoord& aOffset, nscoord& aSize)
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
2005-10-08 05:09:42 +00:00
|
|
|
aOffset = ROUND_TO_TWIPS(GetMetrics().strikeoutOffset);
|
|
|
|
aSize = ROUND_TO_TWIPS(GetMetrics().strikeoutSize);
|
2004-08-14 01:01:16 +00:00
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
2005-08-20 05:36:47 +00:00
|
|
|
nsThebesFontMetrics::GetUnderline(nscoord& aOffset, nscoord& aSize)
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
2005-10-08 05:09:42 +00:00
|
|
|
aOffset = ROUND_TO_TWIPS(GetMetrics().underlineOffset);
|
|
|
|
aSize = ROUND_TO_TWIPS(GetMetrics().underlineSize);
|
2004-08-14 01:01:16 +00:00
|
|
|
|
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
2005-08-20 05:36:47 +00:00
|
|
|
nsThebesFontMetrics::GetHeight(nscoord &aHeight)
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
2005-10-08 05:09:42 +00:00
|
|
|
aHeight = ROUND_TO_TWIPS(GetMetrics().maxHeight);
|
2004-08-14 01:01:16 +00:00
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
2005-08-20 05:36:47 +00:00
|
|
|
nsThebesFontMetrics::GetInternalLeading(nscoord &aLeading)
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
2005-10-08 05:09:42 +00:00
|
|
|
aLeading = ROUND_TO_TWIPS(GetMetrics().internalLeading);
|
2004-08-14 01:01:16 +00:00
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
2005-08-20 05:36:47 +00:00
|
|
|
nsThebesFontMetrics::GetExternalLeading(nscoord &aLeading)
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
2005-10-08 05:09:42 +00:00
|
|
|
aLeading = ROUND_TO_TWIPS(GetMetrics().externalLeading);
|
2004-08-14 01:01:16 +00:00
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
2005-08-20 05:36:47 +00:00
|
|
|
nsThebesFontMetrics::GetEmHeight(nscoord &aHeight)
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
2005-10-08 05:09:42 +00:00
|
|
|
aHeight = ROUND_TO_TWIPS(GetMetrics().emHeight);
|
2004-08-14 01:01:16 +00:00
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
2005-08-20 05:36:47 +00:00
|
|
|
nsThebesFontMetrics::GetEmAscent(nscoord &aAscent)
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
2005-10-08 05:09:42 +00:00
|
|
|
aAscent = ROUND_TO_TWIPS(GetMetrics().emAscent);
|
2004-08-14 01:01:16 +00:00
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
2005-08-20 05:36:47 +00:00
|
|
|
nsThebesFontMetrics::GetEmDescent(nscoord &aDescent)
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
2005-10-08 05:09:42 +00:00
|
|
|
aDescent = ROUND_TO_TWIPS(GetMetrics().emDescent);
|
2004-08-14 01:01:16 +00:00
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
2005-08-20 05:36:47 +00:00
|
|
|
nsThebesFontMetrics::GetMaxHeight(nscoord &aHeight)
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
2005-10-08 05:09:42 +00:00
|
|
|
aHeight = ROUND_TO_TWIPS(GetMetrics().maxHeight);
|
2004-08-14 01:01:16 +00:00
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
2005-08-20 05:36:47 +00:00
|
|
|
nsThebesFontMetrics::GetMaxAscent(nscoord &aAscent)
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
2005-10-08 05:09:42 +00:00
|
|
|
aAscent = ROUND_TO_TWIPS(GetMetrics().maxAscent);
|
2004-08-14 01:01:16 +00:00
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
2005-08-20 05:36:47 +00:00
|
|
|
nsThebesFontMetrics::GetMaxDescent(nscoord &aDescent)
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
2005-10-08 05:09:42 +00:00
|
|
|
aDescent = ROUND_TO_TWIPS(GetMetrics().maxDescent);
|
2004-08-14 01:01:16 +00:00
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
2005-08-20 05:36:47 +00:00
|
|
|
nsThebesFontMetrics::GetMaxAdvance(nscoord &aAdvance)
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
2005-10-08 05:09:42 +00:00
|
|
|
aAdvance = ROUND_TO_TWIPS(GetMetrics().maxAdvance);
|
2004-08-14 01:01:16 +00:00
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
2005-08-20 05:36:47 +00:00
|
|
|
nsThebesFontMetrics::GetLangGroup(nsIAtom** aLangGroup)
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
|
|
|
*aLangGroup = mLangGroup;
|
|
|
|
NS_IF_ADDREF(*aLangGroup);
|
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
2005-08-20 05:36:47 +00:00
|
|
|
nsThebesFontMetrics::GetFontHandle(nsFontHandle &aHandle)
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
|
|
|
return NS_ERROR_NOT_IMPLEMENTED;
|
|
|
|
}
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
2005-08-20 05:36:47 +00:00
|
|
|
nsThebesFontMetrics::GetAveCharWidth(nscoord& aAveCharWidth)
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
2005-10-08 05:09:42 +00:00
|
|
|
aAveCharWidth = ROUND_TO_TWIPS(GetMetrics().aveCharWidth);
|
2004-08-14 01:01:16 +00:00
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
NS_IMETHODIMP
|
2005-08-20 05:36:47 +00:00
|
|
|
nsThebesFontMetrics::GetSpaceWidth(nscoord& aSpaceCharWidth)
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
2005-10-08 05:09:42 +00:00
|
|
|
aSpaceCharWidth = ROUND_TO_TWIPS(GetMetrics().spaceWidth);
|
2004-08-14 01:01:16 +00:00
|
|
|
|
2005-10-08 05:09:42 +00:00
|
|
|
return NS_OK;
|
|
|
|
}
|
2004-08-14 01:01:16 +00:00
|
|
|
|
2005-10-08 05:09:42 +00:00
|
|
|
NS_IMETHODIMP
|
|
|
|
nsThebesFontMetrics::GetLeading(nscoord& aLeading)
|
|
|
|
{
|
|
|
|
aLeading = ROUND_TO_TWIPS(GetMetrics().internalLeading);
|
2004-08-14 01:01:16 +00:00
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
2005-10-08 05:09:42 +00:00
|
|
|
NS_IMETHODIMP
|
|
|
|
nsThebesFontMetrics::GetNormalLineHeight(nscoord& aLineHeight)
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
2005-10-08 05:09:42 +00:00
|
|
|
const gfxFont::Metrics &m = GetMetrics();
|
|
|
|
aLineHeight = ROUND_TO_TWIPS(m.emHeight + m.internalLeading);
|
|
|
|
return NS_OK;
|
|
|
|
}
|
2004-08-14 01:01:16 +00:00
|
|
|
|
2005-10-08 05:09:42 +00:00
|
|
|
nsresult
|
|
|
|
nsThebesFontMetrics::GetWidth(const char* aString, PRUint32 aLength, nscoord& aWidth,
|
|
|
|
nsThebesRenderingContext *aContext)
|
|
|
|
{
|
|
|
|
PRInt32 aFontID = 0;
|
|
|
|
return GetWidth(PromiseFlatString(NS_ConvertUTF8toUTF16(aString, aLength)).get(),
|
|
|
|
aLength, aWidth, &aFontID, aContext);
|
|
|
|
}
|
2004-08-14 01:01:16 +00:00
|
|
|
|
2005-10-08 05:09:42 +00:00
|
|
|
nsresult
|
|
|
|
nsThebesFontMetrics::GetWidth(const PRUnichar* aString, PRUint32 aLength,
|
|
|
|
nscoord& aWidth, PRInt32 *aFontID,
|
|
|
|
nsThebesRenderingContext *aContext)
|
|
|
|
{
|
|
|
|
aWidth = ROUND_TO_TWIPS(mFontGroup->MeasureText(aContext->Thebes(), nsDependentSubstring(aString, aString+aLength)));
|
2004-08-14 01:01:16 +00:00
|
|
|
|
2005-10-08 05:09:42 +00:00
|
|
|
return NS_OK;
|
2004-08-14 01:01:16 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
2005-10-08 05:09:42 +00:00
|
|
|
// Get the text dimensions for this string
|
|
|
|
nsresult
|
|
|
|
nsThebesFontMetrics::GetTextDimensions(const PRUnichar* aString,
|
|
|
|
PRUint32 aLength,
|
|
|
|
nsTextDimensions& aDimensions,
|
|
|
|
PRInt32* aFontID)
|
|
|
|
{
|
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
nsresult
|
|
|
|
nsThebesFontMetrics::GetTextDimensions(const char* aString,
|
|
|
|
PRInt32 aLength,
|
|
|
|
PRInt32 aAvailWidth,
|
|
|
|
PRInt32* aBreaks,
|
|
|
|
PRInt32 aNumBreaks,
|
|
|
|
nsTextDimensions& aDimensions,
|
|
|
|
PRInt32& aNumCharsFit,
|
|
|
|
nsTextDimensions& aLastWordDimensions,
|
|
|
|
PRInt32* aFontID)
|
|
|
|
{
|
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
nsresult
|
|
|
|
nsThebesFontMetrics::GetTextDimensions(const PRUnichar* aString,
|
|
|
|
PRInt32 aLength,
|
|
|
|
PRInt32 aAvailWidth,
|
|
|
|
PRInt32* aBreaks,
|
|
|
|
PRInt32 aNumBreaks,
|
|
|
|
nsTextDimensions& aDimensions,
|
|
|
|
PRInt32& aNumCharsFit,
|
|
|
|
nsTextDimensions& aLastWordDimensions,
|
|
|
|
PRInt32* aFontID)
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
2005-10-08 05:09:42 +00:00
|
|
|
return NS_OK;
|
|
|
|
}
|
2004-08-14 01:01:16 +00:00
|
|
|
|
2005-10-08 05:09:42 +00:00
|
|
|
// Draw a string using this font handle on the surface passed in.
|
|
|
|
nsresult
|
|
|
|
nsThebesFontMetrics::DrawString(const char *aString, PRUint32 aLength,
|
|
|
|
nscoord aX, nscoord aY,
|
|
|
|
const nscoord* aSpacing,
|
|
|
|
nsThebesRenderingContext *aContext)
|
|
|
|
{
|
|
|
|
return DrawString(PromiseFlatString(NS_ConvertUTF8toUTF16(aString, aLength)).get(),
|
|
|
|
aLength, aX, aY, 0, aSpacing, aContext);
|
|
|
|
}
|
2004-08-14 01:01:16 +00:00
|
|
|
|
2005-10-08 05:09:42 +00:00
|
|
|
// aCachedOffset will be updated with a new offset.
|
|
|
|
nsresult
|
|
|
|
nsThebesFontMetrics::DrawString(const PRUnichar* aString, PRUint32 aLength,
|
|
|
|
nscoord aX, nscoord aY,
|
|
|
|
PRInt32 aFontID,
|
|
|
|
const nscoord* aSpacing,
|
|
|
|
nsThebesRenderingContext *aContext)
|
|
|
|
{
|
|
|
|
float app2dev = mDeviceContext->AppUnitsToDevUnits();
|
2004-08-14 01:01:16 +00:00
|
|
|
|
2005-10-08 05:09:42 +00:00
|
|
|
mFontGroup->DrawString(aContext->Thebes(), nsDependentSubstring(aString, aString+aLength), gfxPoint(NSToIntRound(aX * app2dev), NSToIntRound(aY * app2dev)));
|
2004-08-14 01:01:16 +00:00
|
|
|
|
2005-10-08 05:09:42 +00:00
|
|
|
return NS_OK;
|
2004-08-14 01:01:16 +00:00
|
|
|
}
|
|
|
|
|
2005-10-08 05:09:42 +00:00
|
|
|
|
|
|
|
#ifdef MOZ_MATHML
|
|
|
|
// These two functions get the bounding metrics for this handle,
|
|
|
|
// updating the aBoundingMetrics in Points. This means that the
|
|
|
|
// caller will have to update them to twips before passing it
|
|
|
|
// back.
|
|
|
|
nsresult
|
|
|
|
nsThebesFontMetrics::GetBoundingMetrics(const char *aString, PRUint32 aLength,
|
|
|
|
nsBoundingMetrics &aBoundingMetrics)
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
2005-10-08 05:09:42 +00:00
|
|
|
// aCachedOffset will be updated with a new offset.
|
|
|
|
nsresult
|
|
|
|
nsThebesFontMetrics::GetBoundingMetrics(const PRUnichar *aString,
|
|
|
|
PRUint32 aLength,
|
|
|
|
nsBoundingMetrics &aBoundingMetrics,
|
|
|
|
PRInt32 *aFontID)
|
|
|
|
{
|
|
|
|
return NS_OK;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif /* MOZ_MATHML */
|
|
|
|
|
|
|
|
// Set the direction of the text rendering
|
|
|
|
nsresult
|
|
|
|
nsThebesFontMetrics::SetRightToLeftText(PRBool aIsRTL)
|
2004-08-14 01:01:16 +00:00
|
|
|
{
|
|
|
|
return NS_OK;
|
|
|
|
}
|
2005-10-08 05:09:42 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|