Index: filter/inc/filter/msfilter/svdfppt.hxx =================================================================== --- filter/inc/filter/msfilter/svdfppt.hxx (revision 1368331) +++ filter/inc/filter/msfilter/svdfppt.hxx (working copy) @@ -1095,7 +1095,7 @@ ImplPPTTextObj( PptSlidePersistEntry& rPersistEntry ) : mrPersistEntry ( rPersistEntry ) {}; }; -class PPTTextObj +class MSFILTER_DLLPUBLIC PPTTextObj { ImplPPTTextObj* mpImplTextObj; void ImplClear(); Index: sd/source/filter/ppt/pptin.cxx =================================================================== --- sd/source/filter/ppt/pptin.cxx (revision 1368343) +++ sd/source/filter/ppt/pptin.cxx (working copy) @@ -2392,8 +2392,12 @@ sal_Bool bVertical = sal_False; if ( ( pTextObj->GetShapeType() == mso_sptRectangle ) || ( pTextObj->GetShapeType() == mso_sptTextBox ) ) { - if ( pTextObj->Count() ) + //if a placeholder with some custom attribute,the pTextObj will keep those attr,whose text size is zero, + //so sdPage should renew a PresObj to process placeholder. + if ( pTextObj->Count() > 1 || + ( pTextObj->Count() == 1 &&(pTextObj->First()) && pTextObj->First()->GetTextSize()>0 )) bEmptyPresObj = sal_False; + switch ( nPlaceholderId ) { case PPT_PLACEHOLDER_NOTESBODY : ePresObjKind = PRESOBJ_NOTES; break; @@ -2454,7 +2458,17 @@ ApplyAttributes( rStCtrl, aSet ); pPresObj->SetLogicRect(pText->GetLogicRect()); ApplyTextAnchorAttributes( *pTextObj, aSet ); - pPresObj->SetMergedItemSet(aSet); + //set custom font attribute of the placeholder + if ( pTextObj->Count() == 1 ) + { + PPTParagraphObj* pPara = pTextObj->First(); + PPTPortionObj* pPor = NULL; + if ( pPara && pPara->GetTextSize() == 0 && (pPor = pPara->First())) + { + pPor->ApplyTo(aSet, (SdrPowerPointImport&)*this, pTextObj->GetDestinationInstance()); + } + } + pPresObj->SetMergedItemSet(aSet); if ( ( eAktPageKind != PPT_NOTEPAGE ) && ( pSlideLayout->aPlacementId[ i ] != (sal_uLong)-1 ) ) {