5 Replies Latest reply on Apr 7, 2013 9:42 PM by Jon Siegel

    Selecting multiple text layers bug


      I have found this post from April where the bug was acknowledged in the beta: http://forums.adobe.com/message/4306413#4306413.


      I now have the official release of CS6, and I am still seeing this issue. And for clarification, here's what the issue is:


      - I start off creating a text layer with a font size of 20px.

      - I then transform this layer to make it larger.

      - I copy the layer over so I have identical text layers.

      - When I select each individually, I am shown the new, larger font size, we'll just say 40px. But when I select both together, it shows the original font size of 20px in the character palette. When I increase the font size with both selected to say 30px, it actually makes the text more like 60px.


      Will this bug actually get fixed?


      Thanks for any insight you can give.


      And for more info, I am running CS6 off of OSX Lion.

        • 1. Re: Selecting multiple text layers bug
          Level 7

          We are working on a number of text related bugs.  That's all we can tell you right now.

          • 2. Re: Selecting multiple text layers bug
            andrewr23 Level 1

            Thanks, Chris. Just glad to be in the know. CS6 has been awesome so far otherwise!

            • 3. Re: Selecting multiple text layers bug
              Jon Siegel

              I'm going to bump this thread up. I am having the same issue and it is INFURIATING. I have to spend hours editing multiple text layers in Photoshop, and frequently I am given PSD files from other designers and asked to edit them. When I select multiple text layers and assign them a font size, for example 14pt, they all change size. BUT, when I then select the layers individually, they are totally different sizes, NOT 14pt! It takes me several long extra hours just to complete a project because I have to now select every single individual text layer in order to change the font size. Some of the documents I have received have hundreds of text layers that all need to be the same size, but now I have to click on every single layer to change the font to the target size.


              Is this a bug or a new "feature"? If it is a feature, can anyone tell me in what use case does this improve workflow? I must be missing something. My Photoshop is up to date, the latest version.

              • 4. Re: Selecting multiple text layers bug
                Paul Riggott Level 6

                I was going to suggest a script, but it seems that there are major bugs in the javascript DOM.

                It will only set the size if the text has not been transformed and then is not acurate (+- .5), this is a bug.

                If the text has been transformed the new text size has to be divided by the transform factor, this is a bug.

                Tested with Windows 7 and Photoshop CS6 version 13.0.1 so don't know what state other versions are in.


                This script will work for the above version and O.S.

                N.B. if Photoshop gets the bugs fixed this script will no longer work correctly!





                #target photoshop
                if(documents.length) app.activeDocument.suspendHistory('Set Font Size', 'main()'); 
                function main(){
                var win = new Window('dialog','Set Font Size');
                g = win.graphics;
                var myBrush = g.newBrush(g.BrushType.SOLID_COLOR, [0.99, 0.99, 0.99, 1]);
                g.backgroundColor = myBrush;
                win.p1= win.add("panel", undefined, undefined, {borderStyle:"black"}); 
                win.g1 = win.p1.add('group');
                win.g1.orientation = "row";
                win.title = win.g1.add('statictext',undefined,'Set Font Size');
                var g = win.title.graphics;
                g.font = ScriptUI.newFont("Georgia","BOLDITALIC",22);
                win.g5 =win.p1.add('group');
                win.g5.orientation = "row";
                win.g5.rb1 = win.g5.add('radiobutton',undefined,'All text layers');
                win.g5.rb2 = win.g5.add('radiobutton',undefined,'Selected text layers');
                win.g10 =win.p1.add('group');
                win.g10.orientation = "row";
                win.g10.st1 = win.g10.add('statictext',undefined,'Please enter text size..');
                win.g10.et1 = win.g10.add('edittext');
                win.g10.et1.onChanging = function() { 
                  if (this.text.match(/[^\-\.\d]/)) { 
                    this.text = this.text.replace(/[^\-\.\d]/g, ''); 
                win.g100 =win.p1.add('group');
                win.g100.orientation = "row";
                win.g100.bu1 = win.g100.add('button',undefined,'Set Font Size');
                win.g100.bu2 = win.g100.add('button',undefined,'Cancel');
                if(win.g10.et1.text == ''){
                    alert("No text size has been entered!");
                var txtList = new Array();
                    txtList = getTxtLayers();
                var sels = getSelectedLayersIdx();
                for(var z in sels){
                var isTxtArray = isTxtLayer(Number(sels[z]));
                if(isTxtArray == false) continue;
                isTxtArray = String(isTxtArray).split(',');
                for(var s in txtList){
                if(String(app.version).match(/^\d+/) == 13){
                if(getTextdivideFactor() != 0){
                app.activeDocument.activeLayer.textItem.size= (Number(win.g10.et1.text)/Number(getTextdivideFactor()));
                    app.activeDocument.activeLayer.textItem.size= (Number(win.g10.et1.text));
                    app.activeDocument.activeLayer.textItem.size= (Number(win.g10.et1.text));
                function getTextdivideFactor(){
                var ref = new ActionReference();
                ref.putEnumerated( charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") ); 
                var desc = executeActionGet(ref).getObjectValue(stringIDToTypeID('textKey'));
                var textSize =  desc.getList(stringIDToTypeID('textStyleRange')).getObjectValue(0).getObjectValue(stringIDToTypeID('textStyle')).getDouble (stringIDToTypeID('size'));
                if (desc.hasKey(stringIDToTypeID('transform'))) {
                            var mFactor = desc.getObjectValue(stringIDToTypeID('transform')).getUnitDoubleValue (stringIDToTypeID("yy") );
                            return mFactor;
                return 0;
                function selectLayerById(ID, add) {
                    add = (add == undefined)  ? add = false : add;
                 var ref = new ActionReference();
                 ref.putIdentifier(charIDToTypeID('Lyr '), ID);
                 var desc = new ActionDescriptor();
                 desc.putReference(charIDToTypeID('null'), ref);
                 if (add) {
                  desc.putEnumerated(stringIDToTypeID('selectionModifier'), stringIDToTypeID('selectionModifierType'), stringIDToTypeID('addToSelection'));
                 desc.putBoolean(charIDToTypeID('MkVs'), false);
                 executeAction(charIDToTypeID('slct'), desc, DialogModes.NO);
                function isTxtLayer(idx){
                var ref = new ActionReference();
                ref.putIndex( charIDToTypeID('Lyr '), idx );
                var desc = executeActionGet(ref);
                var isTxt = new Array();
                var Id = desc.getInteger(stringIDToTypeID( 'layerID' ));
                var layerName = desc.getString(charIDToTypeID( 'Nm  ' ));
                return isTxt;
                }else{ return false;}
                function getTxtLayers(){ 
                   var ref = new ActionReference(); 
                   ref.putEnumerated( charIDToTypeID('Dcmn'), charIDToTypeID('Ordn'), charIDToTypeID('Trgt') ); 
                   var count = executeActionGet(ref).getInteger(charIDToTypeID('NmbL')) +1; 
                   var Names=[];
                var i = 0; }catch(e){ var i = 1; };
                       if(i == 0) continue;
                        ref = new ActionReference(); 
                        ref.putIndex( charIDToTypeID( 'Lyr ' ), i );
                        var desc = executeActionGet(ref);
                        var layerName = desc.getString(charIDToTypeID( 'Nm  ' ));
                        var Id = desc.getInteger(stringIDToTypeID( 'layerID' ));
                        if(layerName.match(/^<\/Layer group/) ) continue;
                        if(desc.hasKey(stringIDToTypeID("textKey"))) Names.push([[Id],[layerName]]);
                return Names;
                function getSelectedLayersIdx(){ 
                      var selectedLayers = new Array; 
                      var ref = new ActionReference(); 
                      ref.putEnumerated( charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") ); 
                      var desc = executeActionGet(ref); 
                      if( desc.hasKey( stringIDToTypeID( 'targetLayers' ) ) ){ 
                         desc = desc.getList( stringIDToTypeID( 'targetLayers' )); 
                          var c = desc.count 
                          var selectedLayers = new Array(); 
                          for(var i=0;i<c;i++){ 
                               selectedLayers.push(  desc.getReference( i ).getIndex() ); 
                               selectedLayers.push(  desc.getReference( i ).getIndex()+1 ); 
                         var ref = new ActionReference(); 
                         ref.putProperty( charIDToTypeID("Prpr") , charIDToTypeID( "ItmI" )); 
                         ref.putEnumerated( charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") ); 
                            selectedLayers.push( executeActionGet(ref).getInteger(charIDToTypeID( "ItmI" ))-1); 
                            selectedLayers.push( executeActionGet(ref).getInteger(charIDToTypeID( "ItmI" ))); 
                     var vis = app.activeDocument.activeLayer.visible;
                        if(vis == true) app.activeDocument.activeLayer.visible = false;
                        var desc9 = new ActionDescriptor();
                    var list9 = new ActionList();
                    var ref9 = new ActionReference();
                    ref9.putEnumerated( charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt') );
                    list9.putReference( ref9 );
                    desc9.putList( charIDToTypeID('null'), list9 );
                    executeAction( charIDToTypeID('Shw '), desc9, DialogModes.NO );
                    if(app.activeDocument.activeLayer.visible == false) selectedLayers.shift();
                        app.activeDocument.activeLayer.visible = vis;
                      return selectedLayers; 
                • 5. Re: Selecting multiple text layers bug
                  Jon Siegel Level 1

                  Thanks, I appreciate the input, however I would rather have the application work properly than have to run a script. Again, today I am facing at least 8 hours of editing with multiple layers of text, and this problem persists and slows my work. For example, again, I click on a text layer, and in the Character dialogue box it says the point size is 36 pt. When I select that same text with the text selection tool, it says 4.4 pt. It is throwing off our developers who need to quickly scan through PSD files to match point sizes.


                  Can anyone from Adobe shed some light on this issue? Is this how things are going to stay from here on?