Module: fontforge Branch: master Commit: 3d71a1e385d6e7f2bf53d1f563fb451e7f0806f7 URL: http://source.winehq.org/git/fontforge.git/?a=commit;h=3d71a1e385d6e7f2bf53d...
Author: Huw Davies huw@codeweavers.com Date: Tue Apr 20 21:39:49 2010 +0100
fontforge: Enable the width of individual bitmap strikes to be altered.
---
fontforge/bitmapview.c | 46 +++++++++++++++++++++++++--------------------- 1 files changed, 25 insertions(+), 21 deletions(-)
diff --git a/fontforge/bitmapview.c b/fontforge/bitmapview.c index e9affea..5310298 100644 --- a/fontforge/bitmapview.c +++ b/fontforge/bitmapview.c @@ -898,8 +898,8 @@ static void BVSetWidth(BitmapView *bv, int x) { BDFFont *bdf; BDFChar *bc = bv->bc;
+ bc->width = x; if ( bv->bdf->sf->onlybitmaps ) { - bc->width = x; tot=0; cnt=0; for ( bdf = bv->bdf->sf->bitmaps; bdf!=NULL; bdf=bdf->next ) if ( bdf->glyphs[bc->orig_pos]) { @@ -910,8 +910,9 @@ static void BVSetWidth(BitmapView *bv, int x) { bc->sc->width = tot/cnt; bc->sc->widthset = true; } - BCCharChangedUpdate(bc); } + BCCharChangedUpdate(bc); + }
static void BVSetVWidth(BitmapView *bv, int y) { @@ -919,18 +920,20 @@ static void BVSetVWidth(BitmapView *bv, int y) { BDFFont *bdf; BDFChar *bc = bv->bc;
- if ( bv->bdf->sf->onlybitmaps && bv->bdf->sf->hasvmetrics ) { + if ( bv->bdf->sf->hasvmetrics ) { bc->vwidth = bv->bdf->ascent-y; - tot=0; cnt=0; - for ( bdf = bv->bdf->sf->bitmaps; bdf!=NULL; bdf=bdf->next ) - if ( bdf->glyphs[bc->orig_pos]) { - tot += bdf->glyphs[bc->orig_pos]->vwidth*1000/(bdf->ascent+bdf->descent); - ++cnt; - } - if ( cnt!=0 ) { - bc->sc->vwidth = tot/cnt; - bc->sc->widthset = true; - } + if ( bv->bdf->sf->onlybitmaps ) { + tot=0; cnt=0; + for ( bdf = bv->bdf->sf->bitmaps; bdf!=NULL; bdf=bdf->next ) + if ( bdf->glyphs[bc->orig_pos]) { + tot += bdf->glyphs[bc->orig_pos]->vwidth*1000/(bdf->ascent+bdf->descent); + ++cnt; + } + if ( cnt!=0 ) { + bc->sc->vwidth = tot/cnt; + bc->sc->widthset = true; + } + } BCCharChangedUpdate(bc); } } @@ -1008,12 +1011,11 @@ return; GDrawSetCursor(bv->v,ct_shift); /* otherwise we'll move the selection */ } - } else if ( bc->sc->parent->onlybitmaps && - event->u.mouse.x-bv->xoff > bc->width*bv->scale-3 && - event->u.mouse.x-bv->xoff < bc->width*bv->scale+3 ) { + } else if ( event->u.mouse.x-bv->xoff > bc->width*bv->scale-3 && + event->u.mouse.x-bv->xoff < bc->width*bv->scale+3 ) { bv->active_tool = bvt_setwidth; BVToolsSetCursor(bv,event->u.mouse.state|(1<<(7+event->u.mouse.button)), event->u.mouse.device ); - } else if ( bc->sc->parent->onlybitmaps && bc->sc->parent->hasvmetrics && + } else if ( bc->sc->parent->hasvmetrics && bv->height-event->u.mouse.y-bv->yoff > (bv->bdf->ascent-bc->vwidth)*bv->scale-3 && bv->height-event->u.mouse.y-bv->yoff < (bv->bdf->ascent-bc->vwidth)*bv->scale+3 ) { bv->active_tool = bvt_setvwidth; @@ -1535,8 +1537,6 @@ static void BVMenuSetWidth(GWindow gw,struct gmenuitem *mi,GEvent *g) { SplineChar *sc; int val;
- if ( !bv->bdf->sf->onlybitmaps ) -return; if ( mi->mid==MID_SetWidth ) { sprintf( buffer,"%d",bv->bc->width); ret = gwwv_ask_string(_("Set Width..."),buffer,_("Set Width...")); @@ -1555,6 +1555,10 @@ return; else bv->bc->vwidth = val; BCCharChangedUpdate(bv->bc); + + if ( !bv->bdf->sf->onlybitmaps ) +return; + for ( bdf=bv->bdf->sf->bitmaps; bdf!=NULL; bdf=bdf->next ) if ( bdf->pixelsize > mysize ) return; @@ -1788,10 +1792,10 @@ static void mtlistcheck(GWindow gw,struct gmenuitem *mi,GEvent *e) { for ( mi = mi->sub; mi->ti.text!=NULL || mi->ti.line ; ++mi ) { switch ( mi->mid ) { case MID_SetWidth: - mi->ti.disabled = !bv->bdf->sf->onlybitmaps; + mi->ti.disabled = 0; break; case MID_SetVWidth: - mi->ti.disabled = !bv->bdf->sf->onlybitmaps || !bv->bdf->sf->hasvmetrics; + mi->ti.disabled = !bv->bdf->sf->hasvmetrics; break; } }